假設我有一個程式,它部分地使用 FILE *outptr=popen("some command string","r") 運行另一個程式,然后 fread() 是來自 outptr 的那個程式的標準輸出。現在,如果該其他程式從其標準輸入讀取其輸入,并且我希望該輸入來自磁盤上已經存在的檔案 inputfile,那么我可以輕松地撰寫 FILE *outptr=popen("cat inputfile|otherpgm","r") ;
但問題是:我的程式不是磁盤上的一些輸入檔案,而是有一個內部無符號字符緩沖區[9999],這是我想要通過管道傳輸到 otherpgm 的,但我不想先將其寫入磁盤。如何使用 popen() 將緩沖區 [] 直接通過管道傳輸到 otherpgm 的標準輸入?或者其他一些機制,只要我可以從我的程式中讀取 otherpgm 的標準輸出。
uj5u.com熱心網友回復:
如何使用 popen() 將緩沖區 [] 直接通過管道傳輸到 otherpgm 的標準輸入?
這不能使用popen.
或者其他一些機制
您需要設定兩個管道(請參閱man pipe) - 一個從您的程式到另一個程式,一個從其他程式到您的程式,然后fork,關閉子管道的適當末端和exec其他 -程式。
如果您需要寫入或讀取的資料超過PIPE_BUF.
示例代碼。
相關答案——如果你可以在磁盤上創建一個 FIFO,這會容易得多。
另一個帶有示例的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406096.html
標籤:
