[問題] Semaphore 宣告問題
看板C_and_CPP作者blueblueChen (藍藍欠)時間7年前發表 (2018/08/09 02:01), 7年前編輯推噓0(0推 0噓 1→)留言1則, 1人參與, 7年前最新討論串1/1
板友好
我在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,
7年前
, 1F
08/09 11:10, 1F