发现close(1)和fclose(stdout)效果并不一样,为什么?
我写了一个小程序:#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
int fd=open("/dev/stdout", O_WRONLY);
fclose(stdout);//close(STDOUT_FILENO);
dup(fd);
stdout=fdopen(fd,"w");
printf("haha\n");
return 0;
}
它什么也不输出,但是如果我去掉fclose(stdout)改为close(STDOUT_FILENO),那么程序就能运行输出haha
这是为什么呢? man fclose说了这个fclose()内部会调用close()来关闭相应的fd,那么和close(1)的效果应该一样才对啊。
但是在我的centos6上面就是不一样的运行结果。这是为什么呢?
谢谢
页:
[1]