Hi All,
I am using Semaphores for one of my application on Mac OS(10.6). I am able to successfully create the semaphores, but I am not able to get the semid in another process. The same works fine on Linux machine. I can see the list of semaphores using ipcs command.
The Code Snippet is as follows:
First_Process:
#include<stdio.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <errno.h>
#define NUMSEMS 1
int main() {
int semid;
semid = semget("SEMTEST", NUMSEMS, 0666 | IPC_CREAT | IPC_EXCL);
printf("Sem id %d\n", semid);
return 0;
}
After running the above codes executable, semaphore is created. I can verify using ipcs command.
$ipcs s
Semaphores:
s 212860928 0x00001f68 --ra-ra-ra- offshore staff
After this I run my second process.
Second_Process:
#include<stdio.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <errno.h>
#define NUMSEMS 1
int main() {
int semid;
int i;
semid = semget("SEMTEST", NUMSEMS, 0);
printf("----Semid=%d---\n", semid);
return 0;
}
The output of the second process is -1, i.e it is getting semid as -1 eventhough the semkey, NUMSEMS is same(as provided in first process).
Please let me know the changes to be done, so that we can get semid in Second Process also.
Thanks & Regards,
Vinay
I am using Semaphores for one of my application on Mac OS(10.6). I am able to successfully create the semaphores, but I am not able to get the semid in another process. The same works fine on Linux machine. I can see the list of semaphores using ipcs command.
The Code Snippet is as follows:
First_Process:
#include<stdio.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <errno.h>
#define NUMSEMS 1
int main() {
int semid;
semid = semget("SEMTEST", NUMSEMS, 0666 | IPC_CREAT | IPC_EXCL);
printf("Sem id %d\n", semid);
return 0;
}
After running the above codes executable, semaphore is created. I can verify using ipcs command.
$ipcs s
Semaphores:
s 212860928 0x00001f68 --ra-ra-ra- offshore staff
After this I run my second process.
Second_Process:
#include<stdio.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <errno.h>
#define NUMSEMS 1
int main() {
int semid;
int i;
semid = semget("SEMTEST", NUMSEMS, 0);
printf("----Semid=%d---\n", semid);
return 0;
}
The output of the second process is -1, i.e it is getting semid as -1 eventhough the semkey, NUMSEMS is same(as provided in first process).
Please let me know the changes to be done, so that we can get semid in Second Process also.
Thanks & Regards,
Vinay