簡體   English   中英

如何在 pipe 中啟動多個程序?

[英]How can I launch multiple programs in a pipe?

大家好我正在嘗試執行以下操作:創建兩個模仿此命令的孩子

cat <infile | wc -c> outfile

使用

./a.out infile "cat" "wc -c" outfile

為此,我在開頭做一個 pipe 以便在第一個孩子中我 dup2 (fd [1], 1); 然后我跑

| execve (argv [2], ARGS, envp) |

在 ARGS 我們有 {"/bin/cat", "infile", "NULL"};

所以在第二個孩子中,我在 fd [0] 中有前一個程序的 output,但是我不知道如何使用它來將它作為輸入傳遞回 wc-c。

  1. 打開infile進行閱讀。
  2. 打開outfile進行寫入。
  3. 創建 pipe。
  4. 叉子。
  5. 如果在新創建的孩子中,
    1. 克隆(使用dup2infile的描述符到 fd 0。
    2. 將 pipe 的寫入端克隆(使用dup2 )到 fd 1。
    3. 關閉infile的描述符。
    4. 關閉outfile的描述符。
    5. 關閉 pipe 的讀卡器端。
    6. 關閉 pipe 的寫入器端。
    7. 執行cat
  6. 叉子。
  7. 如果在新創建的孩子中,
    1. 將 pipe 的讀取器端克隆(使用dup2 )到 fd 0。
    2. 克隆(使用dup2outfile的描述符到 fd 1。
    3. 關閉infile的描述符。
    4. 關閉outfile的描述符。
    5. 關閉 pipe 的讀卡器端。
    6. 關閉 pipe 的寫入器端。
    7. 執行wc -c
  8. 關閉infile的描述符。
  9. 關閉outfile的描述符。
  10. 關閉 pipe 的讀卡器端。
  11. 關閉 pipe 的寫入器端。
  12. 等第一個孩子。
  13. 等第二個孩子。

錯誤檢查留給您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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