我是一個新手,試圖真的明白系統編程。在下面的程序中,我正在讀取名爲'temp1'(包含1 2 3 4)的文件並將其內容打印到stdout。不過,我也想檢查打開返回的文件描述符的值。如果我在第5行的printf調用中包含'\ n',則輸出將首先輸出filep值,然後輸出文件的內容。但是,如果我刪除換行符,則首先打印文件的內容,然後再打印filep的值。 爲什麼會發生這種情況?C/Unix使用系統調用和printf的奇怪行爲
int main(){
char buf[BUFSIZ];
int n, filep;
// Open the file
filep = open("temp1", 'r');
printf("%d\n", filep); // the newline alters program behaviour
while((n=read(filep, buf, BUFSIZ)) > 0)
write(1, buf, n);
return 0;
}
我使用的是gcc 4.6.3。
@GrijeshChauhan:?? open syscall返回一個文件描述符,它是一個整數。 printf打印該文件描述符的值。 – hssay 2013-05-11 07:33:04
是的你是對的! ...考慮我評論的第二點 – 2013-05-11 07:35:02