C- 信号量 sem_getvalue 没有返回我所期望的?

标签 c semaphore

我一直试图让自己更熟悉信号量,并想知道为什么这段代码没有打印出我期望的值。

#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]) {
    sem_t sem;
    sem_init(&sem, 0, 1);
    int value;
    sem_getvalue(&sem, &value);
    printf("%d\n",value);

    return 0;
}

它为该值打印 0。但根据我的理解,它应该得到我初始化信号量的值为 1 的值?我尝试在一些带有 pthreads 的代码中使用信号量,并将信号量初始化为 1,但是当我调用 sem_getvalue 函数时,它正在打印 32767。我在这里遗漏了什么吗?提前致谢。

编辑:sem_init 和 sem_getvalue 都返回 -1

编辑:解决了。 Mac 上似乎没有实现未命名的信号量。

最佳答案

我得到了预期的输出。 (即 1)

尝试使用 pthread 库链接

gcc sema.c -lpthread

关于C- 信号量 sem_getvalue 没有返回我所期望的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146950/

相关文章:

c - 如何将资源从一个可执行文件复制到另一个可执行文件

使用 SysV 计数信号量

r - R 中的信号量 (IPC)

java - 如何确定变量是否有作用域和生存期?

c - C的类ORM库

c++ - 为什么我的 fork 进程上的信号灯没有被释放?

c - 使用 wait() 和 signal() 有什么好处?

c# - 使用 `lock` 比 `SemaphoreSlim` 有什么优势?

在c中为捕获的数据包创建PCAP文件

c - 如何在 C 中绘制 Unicode 刻度线?