我是一个新手,试图真正理解系统编程。在下面的程序中,我正在读取一个名为“temp1”的文件(包含 1 2 3 4)并将其内容打印到标准输出。但是,我还想检查 open 返回的文件描述符的值。如果我在第 5 行的 printf 调用中包含 '\n',则输出会先打印值 filep,然后再打印文件的内容。但是如果我删除换行符,文件的内容会首先打印,然后是 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。