有没有可能'的fileno(标准输出)!= 1`一个POSIX系统上? [英] Is it possible that `fileno(stdout) != 1` on a POSIX system?
本文介绍了有没有可能'的fileno(标准输出)!= 1`一个POSIX系统上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
能否标准输出
文件描述符 1
不同(的 STDOUT_FILENO
)假设的 标准输出
不必修改的左值?
Can stdout
file descriptor differ from 1
(STDOUT_FILENO
) assuming stdout
need not be a modifiable lvalue?
例如,可以 则freopen(的/ dev /空,W,标准输出)
变化的fileno(标准输出)
的结果?
推荐答案
测试程序:
#include <stdio.h>
int main() {
fclose(stdin);
freopen("stdout.txt", "w+", stdout);
fprintf(stderr, "%d\n", fileno(stdout));
return 0;
}
这在我的机器上打印0(OS X 10.9.4)。
This prints 0 on my machine (OS X 10.9.4).
文件描述符通常重用从最低数量第一次开始。通过关闭标准输入
,文件描述符0被释放,以及随后的则freopen
打开文件时将使用文件描述符0
File descriptors are typically reused starting from the lowest number first. By closing stdin
, file descriptor 0 is freed up, and the subsequent freopen
will use file descriptor 0 when opening the file.
这篇关于有没有可能'的fileno(标准输出)!= 1`一个POSIX系统上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文