可以stdout文件描述符不同1(STDOUT_FILENO)假设stdout不必修改的左值?
例如,可以freopen("/dev/null", "w", stdout)改变fileno(stdout)结果吗?
测试程序:
#include <stdio.h>
int main() {
fclose(stdin);
freopen("stdout.txt", "w+", stdout);
fprintf(stderr, "%d\n", fileno(stdout));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这在我的机器上打印0(OS X 10.9.4).
文件描述符通常从最低编号开始重复使用.通过关闭stdin,文件描述符0被释放,随后freopen将在打开文件时使用文件描述符0.