2014-06-16 46 views
1

我在Unix系統中有一個二進制文件,我希望它從文件中讀取我的所有輸入。重定向unix中的二進制文件

int main(int argc, char * argv[]) { 
    foo(atoi(argv[1]) 
    exit(0); 
} 


int foo(int a) { 
[..] 
read(STDIN_FILENO, chararray, 5); 
[..] 
read(STDIN_FILENO, another_chararray, 10); 
} 

我已經發現read()會繼續讀取它停止讀取的地方。

我的問題是:

如何創建一個file.txt的,讓「./binary < file.txt的」給FOO()一個參數,並在這兩個寫輸入read()調用?

如果在第二個字符後的第一次讀取中有一個空字節會發生什麼情況,下一次讀取會在空字節之後繼續讀取?

回答

1

它應該這樣做,因爲你正在閱讀你的文件作爲二進制文件(因此「nullbytes」不存在),而不是文本。