c - 信号量在 OS X 上不断崩溃

标签 c macos semaphore

我有以下代码:

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/

相关文章:

使用文件和结构的 C 程序

c - for循环到while循环+附加条件

python - 试图在我的 Mac 上安装可靠的 Python?

c - 通过 unix ME 和计数器信号量同步系统

c - C中如何根据奇数或偶数改变两个线程的执行顺序?

c - OpenMP 对数组中每个元素的缩减

C - 无法在 Ubuntu 上静态链接到 OpenSSL

objective-c - 什么可能导致无法在一台计算机上启动 OS X 应用程序的两个副本?

macos - 字体在 Apple 设备上呈现不同。太令人沮丧了

command-line - 命令行信号量实用程序