#include <stdio.h>
int main()
{
printf("If I had more time, \n");
write(STDOUT_FILENO, "I would have written you a shorter letter.\n", 43);
return 0;
}
根據標準輸出是重定向到終端還是磁盤文件,輸出如何不同?輸出如何不同?
#include <stdio.h>
int main()
{
printf("If I had more time, \n");
write(STDOUT_FILENO, "I would have written you a shorter letter.\n", 43);
return 0;
}
根據標準輸出是重定向到終端還是磁盤文件,輸出如何不同?輸出如何不同?
它應該沒有區別。這兩個語句(printf以及write)都寫入stdout,因此寫入終端。如果將其重定向到磁盤文件,它將只是相同的。
可能會有輕微的差異與沖洗。如果程序在關閉filedescriptor之前終止(prematurly),則文件可能不包含所有輸出,而輸出到stdout的文件會使用換行符刷新。
我假設問題是「爲什麼打印到終端的輸出不同於普通文件?」。當stdout是一個tty時,它通常是行緩衝的,所以printf會調用write,因爲你的輸出包含一個換行符。當輸出是常規文件時,輸出會被塊緩衝,所以c stdio庫會延遲寫入。在這種情況下,通過printf寫入的數據直到主返回後才寫入,這樣在通過write
寫入的數據之後,數據就會出現在輸出中。
恩,如果輸出重定向到終端,它將被重定向到終端,如果它被重定向到磁盤上的文件,它將被重定向到磁盤上的文件。我認爲這很明顯。 – rightfold
爲什麼你還沒有包含'unistd.h'? – haccks
任何錯誤'FILE * f = fopen(「myfile.txt」,「a」); fprintf(f,「我會給你寫一封短信。\ n」);'? – LihO