[問題] Semaphore 宣告問題

看板C_and_CPP作者 (藍藍欠)時間5年前 (2018/08/09 10:01), 5年前編輯推噓0(001)
留言1則, 1人參與, 5年前最新討論串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, 5年前 , 1F
搞定了 看起來是能work的 謝謝
08/09 11:10, 1F
文章代碼(AID): #1RQw1YTx (C_and_CPP)