我是一个新手,试图真的明白系统编程。在下面的程序中,我正在读取名为'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