【发布时间】:2013-05-11 07:23:56
【问题描述】:
我是一个新手,试图真正了解系统编程。在下面的程序中,我正在读取一个名为“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。
【问题讨论】:
-
@GrijeshChauhan : ?? open 系统调用返回一个文件描述符,它是一个整数。 printf 打印该文件描述符的值。
-
是的,你是对的! ...考虑我评论的第二点
标签: c unix system-calls