fileno() 不可用?

iCo*_*ime 2 c gcc posix c99

我试图isatty()在我的 C 代码中使用 posix 函数来判断输出是否被重定向。然而,要做到这一点,我需要一个文件描述符,从我的研究来看,它似乎fileno()不再包含在stdio.h. 是否有其他获取文件描述符的方法?

sfs*_*man 5

它仍然存在,但您可能必须显式打开 POSIX 功能。特别是,在 Linux 下,fileno仅当启用 POSIX 或 XOPEN 功能时才可用。从fileno(3)联机帮助页:

glibc 的功能测试宏要求(请参阅 feature_test_macros(7)):

fileno(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
Run Code Online (Sandbox Code Playgroud)

因此,使用 进行编译-D_POSIX_SOURCE