我正在尋找一種方法來從終端的管道或通過指定一個文件名作爲參數拉入到我的程序輸入。有效地C輸入通過管道或參數
1. foo | myprogram
OR
2. foo > bar; myprogram -w bar
第二個操作僅通過讀取文件即可實現。然而,我正在繪製一個空白的如何使用管道將輸出從foo
重定向到myprogram
。在我設法找到的所有例子中,Pipes幾乎全部用於從父母到孩子的流程。我是在想一個合適的管道還是這是一個不同的機制?
我也意識到,當執行foo | myprogram
時,程序會被模擬執行。如果連續讀入foo
,這是如何處理的。
編輯:
忘了包括這一點:
int main(){
char buff[255];
int i = read(0, buff, 255);
printf("Debug: %s\n", buff);
return 0;
}
例如如果我執行ls | myprogram
我傾向於接受。
. ../ files
Debug:
代替
Debug: . ../ files
你會想用'dup2'系統調用。 – squiguy
另請參見http://advancedlinuxprogramming.com/ –
做這樣的'read'不能保證NUL終止的字符串,這是'printf'正常工作所需的字符串。另外,'read'將會阻塞,直到看到255個字符 - 數組中將不會有空間放置NUL字符。 – prprcupofcoffee