- 论坛徽章:
- 0
|
同样一段代码,在AIX、Solaris、Linux上没问题,在HP-UX上却不行
struct semun {
int val;
struct semid_ds *buf;
ushort_t *array;
};
/ InitialSemaphore
int InitialSemaphore(key_t key, int value)
{
int semid;
struct semun arg;
int nret = 0;
semid = semget(key, 1, IPC_CREAT);
if (semid < 0)
{
printf("semget error:errno=%d,%s\n",errno,strerror(errno));
nret = -2;
}
if (nret >;= 0) {
arg.val = value;
if (semctl(semid, 0, SETVAL, arg) < 0)
{
/*此处产生了错误*/
printf("semctl error:errno=%d,%s\n",errno,strerror(errno));
nret = -3;
}
}
if (nret >;= 0)
nret = semid;
return nret;
}
int
main()
{
InitialSemaphore(0x76000000,200);
return 0;
}
运行结果semctl error:errno=34,Result too large
其实semctl初始化的时候设的200也不大啊,哪位大虾可以解决啊,谢谢! |
|