This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

shmget() not working(?)


I have cygserver running in the background (default options) on
a W2K box.
CYGWIN is set to 'server'.
The following test program:

#include <sys/shm.h>
#include <errno.h>

int
main(int argc, char **argv)
{
    int pid = fork();
    int id;

    if (pid == 0) {
        sleep(5);
        id = shmget(1, 100, 0666);
        printf("child (%d): %d (%d)\n", getpid(), id, errno);
    } else {
        id = shmget(1, 100, 01666);
        printf("parent (%d): %d (%d)\n", getpid(), id, errno);
        sleep(10);
        shmctl(id, IPC_RMID, 0);
    }

    return (0);
}

Produces the following output:

parent (35492): 196609 (0)
child (3876): 0 (0)

No errors are reported in the cygserver log.

This shows that:
1.  The parent created the shared memory segment and got back its
ID (196609).
2.  The child process tried to attach to the parent's shared memory
segment (using the same key = 1), but shmget() returned 0 with no
error!

Can anyone enlighten me as to what might be wrong?


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]