同一句 semget(key,0,0) 在rh7.2和Solaris inter X86 下竟然返回不同结果,可有高手分析一下。

zteeb 2003-09-12 03:17:38
有一段代码,别人写的,原来在linux下开发的,现要移植到sol下。
...........
semid=semget(key,0,0) //key为key_t类型的已知的值

上句,在rh7.2下返回semid<0,但是在sol intel x86 下返回 semid=196608 ,这是为什么?而且semget的第三个参数是0,semget又代表什么意思啊?
...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshinethinking 2003-09-12
  • 打赏
  • 举报
回复
功能:取得一组信号量.
语法:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key,nsems,semflg)
key_t key;
int nsems,semflg;
说明:返回和key相关的信号量标识符.
若以下事实成立,则与信号量标识符,与之相关的semid_ds数据结
构及一组nsems信号量将被创建:
. key等于IPC_PRIVATE.
. 系统内还没有与key相关的信号量,同时(semflg&IPC_CREAT)
为真.
创建时新的信号量相关的semid_ds数据结构被初始化如下:
. 在操作权限结构,sem_perm.cuid和sem_perm.uid设置等于调用
进程的有效UID.
. 在操作权限结构,sem_perm.cgid和sem_perm.gid设置等于调用
进程的有效GID.
. 访问权限比特位sem_perm.mode设置等于semflg的访问权限比
特位.
. sem_otime设置等于0,sem_ctime设置等于当前系统时间.
返回值:若调用成功,则返回一非0值,称为信号量标识符;否则返回-1.
zteeb 2003-09-12
  • 打赏
  • 举报
回复
而且semget的第三个参数是0,semget又代表什么意思啊?
~~~~~~~~~~~~~~~~~~~~~~~~~~~我是问,如果semget的第三个参数是0,那么semget会创建个什么样的信号量?

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧