[问题] Semaphore 宣告问题

楼主: blueblueChen (蓝蓝欠)   2018-08-09 10:01:03
板友好
我在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 这样是对的吗?
楼主: blueblueChen (蓝蓝欠)   2018-08-09 11:10:00
搞定了 看起来是能work的 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com