簡體   English   中英

C將標准輸出重定向到幾個地方

[英]C redirect standard output to several places

將輸出重定向到另一個目標非常容易。 我可以輕松實現:

freopen ("/def/tty0", "w", stdout);
printf ("Redirected");
fclose (stdout);

但是,如何將其重定向到兩個或多個文件? 我需要類似於“ tee”提供的功能。

有沒有眾所周知的方法?

這不可能直接做到:每個文件描述符都恰好分配給一個資源(通常是一個文件)。 如果要寫入FILE產生寫入多個文件的收益,則必須采取一些技巧。 這里有一些想法:

  • 使用僅GNU函數fopencookie(3)來創建一個FILE* ,該FILE*實際上輸出到多個文件。 有關更多詳細信息,請參見fopencookie(3)的聯機幫助頁。
  • 制作管道,然后叉。 分叉的進程從管道中讀取並將讀取的內容寫入所需的所有文件中。 原始進程將寫入管道。
  • 使用適當的參數調用tee(1)並將數據寫入tee(1)的標准輸入中。 看一下popen(3)有用的功能。

暫無
暫無

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

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