求助各位大神!
一個父行程p0,創建兩個子行程p1和p2;只使用信號相關機制作為通信手段,讓p1列印出p2的pid,p2列印出p1的pid。
目前的思路是由主行程記錄兩個子行程的PID,再分別將p1的PID通過信號發送給p2,將p2的PID通過信號發送給p1。但是不知道該如何實作?謝謝大佬們了!
int main()
{
pid_t pid1 = 0xFFFF, pid2 = 0xFFFF, proc1, proc2;
if(pid1 != 0 && pid2 != 0) // parent process?
pid1 = fork();
if(pid1 != 0 && pid2 != 0) // parent process?
pid2 = fork();
if(pid1 != 0 && pid2 != 0) // parent process?
{
// TODO
}
return 0;
}
uj5u.com熱心網友回復:
你可以使用無名管道,無名管道可以用于父子行程傳遞訊息,使用信號這個好像辦不到
int fds[2];
pipe(fds);//初始化一條管道
if(!fork())
{
close(fds[0]);//關閉讀端
write(fds[1], "你要傳輸的訊息",strlen("你要傳輸的訊息"));
}
else
{
close(fds[1]);//關閉寫端
char buf[128] = {0};
read(fds[0], buf, sizeof(buf));
printf("%s\n",buf);
}
這是我以前寫的小例子,你可以參考參考,父子行程誰打開寫端,誰打開讀端由你的需求決定。fds[0]表示讀端,fds[1]表示寫端
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/76211.html
標籤:專題技術討論區
上一篇:linux 域名決議服務器
下一篇:雙系統問題
