在linux系統中實現父子程序的通訊可以採用pipe()和fork()函式進行實現。利用兩個管道在父子程序之間進行通訊如:
1 #include2 #include3 #include4 #include5 #include6int main(void)23
24 pid=fork();
25if(-1 == pid) //
此處為了驗證父子程序是否建立成功,如果未建立成功,則返回-1
2630
else
if(0 ==pid)
3136
else
3742
return0;
43 }
對於父子程序,在程式執行時首先進入的是父程序,其次是子程序,在此我個人認為,在建立父子程序的時候程式是先執行建立的程式,其次在複製父程序建立子程序。
fork()函式主要是以父程序為藍本複製乙個程序,其id號和父程序的id號不同。對於結果fork出來的子程序的父程序id號是執行fork()函式的程序的id號;
例如:父程序, fork返回值是:17025 id:17024 ,父程序id:16879
子程序, fork返回值是:0, id:17025 ,父程序id:17024
pipe()函式是建立管道函式,在管道建立成功時,函式返回值是0;在管道建立失敗是,函式返回值是-1;
(有什麼錯誤希望各位指出,本人定會改正,謝謝各位的閱讀)
linux 程序之間 的通訊
在linux程序中有時需要程序之間相互的通訊 mmap 記憶體對映就是其中一種 通過建立檔案對映到磁碟,然後返回乙個指標,這樣就可以對磁碟進行讀取 mmap 系統呼叫使得程序之間通過對映同乙個普通檔案實現共享記憶體。普通檔案被對映到程序位址空間後,程序可以向訪問普通記憶體一樣對檔案進行訪問,不必再呼...
匿名管道實現父子程序之間的通訊
匿名管道 匿名管道可以實現父子程序的通訊,乙個由另乙個程序呼叫createprocess函式建立的程序稱為子程序 我們在利用createpipe建立你民管道的時候會獲得管道的讀寫控制代碼 子程序可以繼承這個控制代碼 在父程序通過 createpipe函式獲得控制代碼可以對匿名管道進行讀寫操作 在子程...
程序之間通訊
之所以開啟子程序 肯定需要他幫我們完成任務,很多情況下,需要將資料返回給父程序。然而程序記憶體是物理隔離的 1.將共享資料放在檔案中,就是慢 2.管道subprocess 中那個管道只能單向通訊,必須有父子關係 3.共享一塊記憶體區域 得作業系統幫你分配,速度快 from multiprocessi...