开发者社区> 问答> 正文

linux用semctl获取信号量的值,为什么会出现以下情况

screenshot
如上,这样也能把semid的0号信号的val打印出来,为什么?val = su.val不应该放在semctl后面才行吗?

展开
收起
杨冬芳 2016-07-14 15:54:04 2443 0
1 条回答
写回答
取消 提交回答
  • IT从业

    int ret = 0;
    union semun su;
    int val;
    val = su.val;
    printf("val:%dn",val);//添加
    ret = semctl(semid,0,GETVAL,su);
    printf("val:%dn",val);
    printf("val:%dn",su.val);//添加

    我也感觉这个问题很奇怪。你看看上面的三个输出是不是一样?然后你再把赋值语句放在semctl后面试一试呢。

    2019-07-17 19:56:25
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载