C-信号量sem_getvalue没有返回我所期望的吗? [英] C- Semaphore sem_getvalue not returning what I'm expecting?

查看:16
本文介绍了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没有返回我所期望的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆