[問題] Semaphore 宣告問題
板友好
我在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://www.ptt.cc/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
→
08/09 11:10,
5年前
, 1F
08/09 11:10, 1F