簡體   English   中英

如何在 c 的 char 數組中保存命令的 output?

[英]How to save output of a command in char array in c?

我需要使用管道使 2 個程序相互通信。 第一個程序保存它在 pipe 中的路徑並將其發送到第二個,它應該使用該路徑運行ls命令並發回ls的 output 。 我想這樣發送write(fd2, arr2, strlen(arr2)+1); 其中fd2是一個包含描述符的 integer。 我想execvp("ls ", argv); 並將它的 output 分配給arr2 ,但我不知道如何在沒有添加文件的情況下執行此操作。

編輯

基本上問題是:

如何保存execvp("ls ", argv); 在一個數組中?

execvp沒有 output 值(因為從exec function 返回的事實表明存在錯誤)。

如果您只想擁有 output,請使用popen

如果您想要更多控制權(或想要同時進出重定向),請繼續閱讀。

假設您要獲取您在exec中運行的程序的 output ,您需要執行以下操作:

  • 制作 pipe (使用pipe()
  • fork()
  • 在其中一個進程(通常是子進程)中:
    • 設置描述符,使 1 指向 pipe 的寫入端(使用dup2
    • 關閉同一個pipe的讀端和另一個寫端
    • exec()
  • 在另一個進程(通常是父進程)中:
    • 關閉pipe的寫入端
    • 從 pipe 的讀取端讀取,直到它從寫入端關閉
    • 等待子進程退出(注意關閉 pipe 不等同於終止進程)
    • 使用您從 pipe 中讀到的任何內容。

暫無
暫無

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

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