假设STDOUT_FILENO
,stdout
文件描述符可以不同于1
( stdout
need not be a modifiable lvalue ) ?
例如,可以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;
}
这会在我的机器 (OS X 10.9.4) 上打印 0。
文件描述符通常从最低编号开始重用。通过关闭stdin
,文件描述符0被释放,后续的freopen
打开文件时将使用文件描述符0。
关于c - POSIX 系统上的 `fileno(stdout) != 1` 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516375/