gpt4 book ai didi

c - sem 等待后的 sem post 不起作用

转载 作者:行者123 更新时间:2023-12-01 05:22:12 28 4
gpt4 key购买 nike

我正在尝试创建一个基于管道的共享内存。我也在使用信号量,我的一个信号量有问题(也许我确实有更多问题,但我还没有注意到)

这个信号量初始化:

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() 上,即使儿子执行了 post...

最佳答案

您不能在多个进程中使用未命名的信号量,因为它们仅存储在内存中,并且两个进程的内存是共享的。

你必须使用 sem_openfork之前创建一个命名信号量,然后在子进程中也再次使用sem_open打开现有的信号量。

关于c - sem 等待后的 sem post 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15085159/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com