我有以下代码:
sem_t *semFull = sem_open("/semFull", O_CREAT, 0644, 0);
sem_t *semEmpty = sem_open("/semEmpty", O_CREAT, 0644, shared.buffSize);
这段代码在Linux上完美运行但是当我尝试在OS X上执行它时,我一直在分段错误
有人可以帮我解决这个问题吗?
由于
答案 0 :(得分:1)
您不应在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);
使用这种方法可以解决您的问题。