對於作業,我必須從標準輸入中讀取,將其保存到一個文件,然後在另一個進程中讀取該文件。不過,我很困惑,爲什麼這個代碼不工作:使用write()創建一個臨時文件C
while((n = read(0,buf,sizeof(buf))) > 0) {
int tempfile = open("testfile", O_TRUNC | O_CREAT, 0666);
write (tempfile , buf , sizeof(buf));
close(tempfile);
process("testfile");
}
我不應該使用任何標準輸入輸出的東西。
當我查看我創建的文件時,它有0個字節,但緩衝區本身有正確的信息....有人可以幫助他們看到我出錯的地方嗎?
我可以在文件名上使用進程並正確讀取它們。
您應該在** while循環之前打開您的輸出文件**,然後關閉它。您現在正在執行的方式現在會在每個循環中重新初始化文件。 – fvu
在每次寫入更多數據之前,是否有更好的方法清除文件中的數據? –
所以你的意思是這是故意的?也就是說,一個讀取,然後是一個寫入,文件被另一個進程讀取,等等?如果是這樣的話,你在做的事情看起來像一個內部進程通信機制,如果是這樣的話,我會看看更合適的機制,比如管道或套接字 - 你確定每次寫入東西時都必須清除臨時文件在裏面? – fvu