パイプ ベースの共有メモリを作成しようとしています。私もセマフォを使用していますが、セマフォの 1 つに問題があります (他にも問題があるかもしれませんが、まだ気づいていません)。
このセマフォの初期化:
if (sem_init(&(sem_readers), 1, 0) < 0) {
perror("Error sem_init");
return -1;
}
使用法:
まずはお父さん(読み終わり):
if (sem_wait(&(sem_readers)) < 0) {
perror("ERROR: sem_wait i");
return -1;
}
それから息子、書き終わり:
if (sem_post(&(sem_readers)) < 0) {
perror("ERROR: sem_post SEM_SHM_PIPE_PIPE");
return -1;
}
何らかの理由で、息子がポストを行っているにもかかわらず、父親はセマフォのこのwait()に固執しています...