作者blueblueChen (蓝蓝欠)
看板C_and_CPP
标题[问题] Semaphore 宣告问题
时间Thu Aug 9 10:01:03 2018
板友好
我在Linux上写个 两个 process ,存取一个 shared meemory
如果只宣告一个讯号量,两个 process 有符合我预期的跑,但是宣告两个一直出错
semid = semget(ftok(".",'a'),2,(IPC_CREAT|0600)); //这边回传semid=0,0不知道
//有没有成功
if(sem_init(semid, 0) == -1)
perror("Initialize semaphore\n"); //会跑到这边: Bad address
else
printf("Semaphore has initialized\n");
int sem_init(int sem_id, int value){
union semun sem_union;
// sem_union.val = value;
if (semctl(sem_id, 0, SETALL, sem_union) == -1) {
return -1;
}
return 0;
}
请问我这出错在哪边呢? 照着网路上范例 semget也是这样宣告..
谢谢。
ps:
後来我找到方法
sem_init(int sem_id, int value){
union semun sem_union;
unsigned short array = {0,0};
sem_union.array = array; //这样就不会报错 ..
if (semctl(sem_id, 0, SETALL, sem_union) == -1) {
return -1;
}
return 0;
}
但 semid 回传 0 这样是对的吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.68.215.61
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1533780066.A.77B.html
※ 编辑: blueblueChen (219.68.215.61), 08/09/2018 10:06:54
※ 编辑: blueblueChen (219.68.215.61), 08/09/2018 10:11:05
1F:→ blueblueChen: 搞定了 看起来是能work的 谢谢 08/09 11:10