私はシステムプログラミングを本当に理解しようとしている初心者です。次のプログラムでは、'temp1' というファイル (1 2 3 4 を含む) を読み取り、その内容を stdout に出力しています。ただし、open によって返されるファイル記述子の値も確認したいと考えていました。5 行目の printf 呼び出しに '\n' を含めると、出力は値 filep を最初に出力し、次に file の内容を出力します。しかし、改行を削除すると、ファイルの内容が最初に出力され、次に filep の値が出力されます。なぜこれが起こるのでしょうか?
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 を使用しています。