名前付きセマフォを使用してマルチプロセス プログラムを作成しています。マスター プロセスでは、次のコードでセマフォを開いています。
semaphore = sem_open("/msema",O_RDWR|O_CREAT|O_TRUNC,00777,1);
if (semaphore == SEM_FAILED)
perror("SEMAPHORE");
そして子プログラムで
count_sem=sem_open("/msema",O_RDWR);
if(count_sem==SEM_FAILED)
{
perror("sem_open");
return 1;
}
sem_wait() で
do {
errno=0;
printf("BeforeSemWait\n");
rtn=sem_wait(count_sem);
printf("afterSemWait\n");
} while(errno==EINTR);
if(rtn < 0) {
printf("Error\n");
perror("sem_wait()");
sem_close(count_sem);
return 1;
}
sem_wait() からバス エラーが発生しています
BeforeSemWait
Program received signal SIGBUS, Bus error.
0x00a206c9 in sem_wait@@GLIBC_2.1 () from /lib/libpthread.so.0`
私は何を間違っていますか?
編集: コード全体: master.c: http://pastebin.com/3MnMjUUM worker.c http://pastebin.com/rW5qYFqg