本文介绍了C-信号量sem_getvalue没有返回我所期望的吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直在尝试更好地了解信号量,我想知道为什么此代码没有输出我预期的值。
#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
",value);
return 0;
}
它打印0作为值。但根据我的理解,它应该是获得我初始化信号量的值,哪个是1?我尝试在一些代码中使用带有p线程的信号量,并将信号量的值初始化为1,但是当我调用sem_getvalue函数时,它打印了32767。我是不是错过了什么?提前谢谢。
编辑:sem_init和sem_getvalue均返回-1
编辑:已解决。未命名信号量似乎未在Mac上实现。
推荐答案
我正在获得预期的输出。(即%1)
尝试使用p线程库链接
gcc sema.c -lpthread
这篇关于C-信号量sem_getvalue没有返回我所期望的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!