当前位置:  技术问答>linux和unix

关于开辟信号灯和消息队列的问题

    来源: 互联网  发布时间:2016-06-04

    本文导语:  电脑开机后运行我的程序,里面的 semget()函数,返回值为0 ,将程序退出,再运行就不会有问题。msgget()函数也有这个问题,请问高手这是什么原因? linux系统 内核2.6.19  谢谢! | 系统调用:sem...

电脑开机后运行我的程序,里面的 semget()函数,返回值为0 ,将程序退出,再运行就不会有问题。msgget()函数也有这个问题,请问高手这是什么原因?
linux系统 内核2.6.19  谢谢!

|
系统调用:semget();
原型:intsemget(key_t key,int nsems,int semflg);
返回值:如果成功,则返回信号量集的IPC标识符。如果失败,则返回-1:errno=EACCESS(没有权限)
EEXIST(信号量集已经存在,无法创建)
EIDRM(信号量集已经删除)
ENOENT(信号量集不存在,同时没有使用IPC_CREAT)
ENOMEM(没有足够的内存创建新的信号量集)
ENOSPC(超出限制)
    系统调用semget()的第一个参数是关键字值(一般是由系统调用ftok()返回的)。
系统内核将此值和系统中存在的其他的信号量集的关键字值进行比较。打开和存取操作与
参数semflg中的内容相关。IPC_CREAT如果信号量集在系统内核中不存在,则创建信号量
集。IPC_EXCL当和 IPC_CREAT一同使用时,如果信号量集已经存在,则调用失败。如果单
独使用IPC_CREAT,则semget()要么返回新创建的信号量集的标识符,要么返回系统中已
经存在的同样的关键字值的信号量的标识符。如果IPC_EXCL和IPC_CREAT一同使用,则要
么返回新创建的信号量集的标识符,要么返回-1。IPC_EXCL单独使用没有意义。参数nsems
指出了一个新的信号量集中应该创建的信号量的个数。信号量集中最多的信号量的个数是在
linux/sem.h中定义的:
#defineSEMMSL32/*

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何为数组动态开辟内存???
  • java能否动态开辟string数组?
  • 强烈要求开辟UnixLinux下编程论坛,欢迎跟贴
  • 用C如何在磁盘开辟一个大的空间,用来存储相关信息
  • 在suse linux下的程序,开辟一小块儿内存竟然用了400多个毫秒,高手帮忙分析一下
  • C++ 在堆上开辟与释放二维、三维指针详细解析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3