gpt4 book ai didi

c - POSIX 系统上的 `fileno(stdout) != 1` 可能吗?

转载 作者:IT王子 更新时间:2023-10-29 00:26:13 25 4
gpt4 key购买 nike

假设STDOUT_FILENOstdout 文件描述符可以不同于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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com