我编写了这段代码,让我的双手处理系统调用。我希望第一个printf在控制台中显示结果..但是它们都显示给定的文件位置..
#include<stdio.h>
#include <unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
void main(){
printf("Hello World!!! Before close\n");
close(1);
int fd = open("/home/abhishek/Desktop/example.txt",O_RDWR);
printf("Hello World!!! After close");
}
实际上哪里出错?
答案 0 :(得分:2)
stdout
的输出可以被缓冲,并且在刷新或关闭流之前不会实际写入底层文件描述符。尝试:
fflush(stdout);
在close(1)
之前。
请注意,混合stdio和系统文件描述符操作通常不是一个好主意。使用其中一种,否则您可能会出现如您所示的混乱行为。