[英]How to use fork() to run 3 commands in C?
我必須實現同時(同時)運行一定數量的可執行文件(例如 grep、echo 等)的代碼。 可執行文件將作為我已解析的字符串給出。 代碼的要求是一個可執行文件的 output 是另一個可執行文件的輸入。
我試圖了解當有奇數個可執行文件時如何實現這一點。 據我所知,fork function 將復制手頭的代碼。 如果我這樣寫我的代碼:
for(int I=0; I<3; I++){
pid_t pid = fork();
}
那么當I==0
時,將產生 1 個孩子。 當I==1
時,將產生 2 個孩子,同樣,當I==2
時,將產生 4 個孩子。 如果我只允許在孩子身上執行(當pid==0
時),我仍然會有 7 次執行,這比我需要的多 4 次。
可能會發生什么
1) parent creates 3 children child1(i=0), child2(i=1), child3(i=2)
2) child1 creates 2 children child4 (i=1), child5(i=2)
3) child2 creates 1 child child6 (i=2)
4) child4 creates 1 child child7 (i=2)
為了解決這個問題,首先注意父 pid 是什么
pid_t parent = getpid();
然后創建孩子
for (int i = 0; i < 3; ++ii)
{
pit_t child = fork();
如果不是父級,則爆發
if (child != parent) break;
}
你現在有一個父母和三個孩子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.