Hi Kai, Apart from what Takashi already wrote, there's another bug in this code:
On Feb 16 12:04, Yeo Kai Wei via Cygwin wrote: > #define ByteSize 512 > #define BackingFile "/shMemEx" > #define AccessPerms 0644 > #define SemaphoreName "mysemaphore" ^^^^^^^^^^^^ What Takashi wrote. The reason that you don't notice that sem_open actuially failed is... > //Create the semaphore > sem_t* semptr = sem_open( SemaphoreName,//name > O_CREAT, //create semaphore > AccessPerms, //protection permissions > 0); //Initial value > > //ERROR > if(semptr == (void*) -1) ^^^^^^^^^^ This. Why do you test for -1? If you read the POSIX man page for sem_open, you'll see this: Upon successful completion, the sem_open() function shall return the address of the semaphore. Otherwise, it shall return a value of SEM_FAILED [...] ^^^^^^^^^^ SEM_FAILED is not necessarily -1. On Cygwin it's defined as #define SEM_FAILED ((sem_t *) 0) in /usr/include/semaphore.h. So your code just seems to fail in sem_post, but actually that's because sem_open failed and your code checks for the wrong return value. HTH, Corinna -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple