鱼C论坛

 找回密码
 立即注册
查看: 3290|回复: 2

求教 信号量控制semctl() 总是失败 返回值-1

[复制链接]
发表于 2014-10-7 23:32:49 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 PDMS 于 2014-10-8 12:18 编辑

写了一小段代码 想学习进程间通信中信号量的使用 结果发现运行到semctl处就会卡住  

perror 显示出  numerical result out of range   请大家给我点拨点拨  

程序的主要目的是(linux系统)在一个用户下运行  之后另一个用户也运行 先运行的锁死信号灯 后运行的动不了 直到第一个输入s字符解锁

#include<stdlib.h>
#include<stdio.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<sys/types.h>

int main()
{
  struct sembuf down = {0,-1,0} ;
  struct sembuf up = {0,1,0} ;
 
   int semid = semget(IPC_PRIVATE,1,IPC_CREAT|0666) ;  // 设置信号
   if(semid!=-1) 
   { 
     int ctl = semctl(semid,1,SETVAL) ; // 控制信号量
     if(ctl=-1)
     {  perror(" for ctl ") ;  }
   
      semop(semid,&down,1) ;    // 锁定

   printf(" locked  \n") ;   // 报错
    
      while(getchar()!='s')    // 死循环 直到输入字符
       {   }   
 
      semop(semid,&up,1) ;  //   解锁 
   }
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-10-8 19:56:59 | 显示全部楼层

竟然没人能解  这可如何是好   :cry
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-11-1 04:07:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 06:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表