在C語言:兩兄弟怎麼聯繫?
我有一個父親,通過fork()
讓兩個兒子在一個循環,我想每一個兒子將(在將爲pid_t型)弟弟的進程ID。
我嘗試通過管道做這件事,但我沒有成功。 你知道我該怎麼做?
我通過(write(pos[1],getpid(),sizeof(pid_t))
這樣做(這個兒子送他的兄弟他的PID) ,但它不工作...
謝謝!
在C語言:兩兄弟怎麼聯繫?
我有一個父親,通過fork()
讓兩個兒子在一個循環,我想每一個兒子將(在將爲pid_t型)弟弟的進程ID。
我嘗試通過管道做這件事,但我沒有成功。 你知道我該怎麼做?
我通過(write(pos[1],getpid(),sizeof(pid_t))
這樣做(這個兒子送他的兄弟他的PID) ,但它不工作...
謝謝!
寫入需要一個指向要寫入的數據的指針。 getpid
返回進程ID,而不是指向進程ID的指針。你需要的返回值從getpid
存儲變量:
pid_t pid = getpid();
write(pos[1], &pid, sizeof(pid_t);
我假設POS [1]持有管同級的文件描述符。
通常,兄弟進程無法通過管道相互通信。但是,您可以讓父母將其他兄弟姐妹的pid發送給每個兄弟姐妹。要做到這一點,你當然需要建立兩個管道,每個孩子一個。
parent
/\
/\
/ \
son1 son2
父將需要一次創建一個兒子,那麼當它知道這兩個已經成功啓動,它可以發送每個子進程兄弟的PID,每個。
現在,它的工作我以前嘗試過類似的東西,但我沒有成功。 謝謝! – Yoar