我有以下代码:
sem_t *semFull = sem_open("/semFull", O_CREAT, 0644, 0);
sem_t *semEmpty = sem_open("/semEmpty", O_CREAT, 0644, shared.buffSize);
这段代码在 Linux 上运行完美,但是当我尝试在 OS X 上执行它时,我总是遇到段错误
谁能帮我解决这个问题?
谢谢
最佳答案
你不应该在 OS X 上使用 sem_t
,你应该使用 semaphore_t
。
您需要导入以下库
#include <mach/semaphore.h>
#include <mach/task.h>
#include <mach/mach_init.h>
您可以使用以下方式创建信号量:
semaphore_create(mach_task_self(), &shared.full, SYNC_POLICY_FIFO, 0);
semaphore_create(mach_task_self(), &shared.empty, SYNC_POLICY_FIFO, shared.buffSize);
您的问题应该使用这种方法来解决。
关于c - 信号量在 OS X 上不断崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36892548/