簡體   English   中英

如何使用 fork() 在 C 中運行 3 個命令?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM