查看fopen的手册页,我无法得到这个问题的明确答案。
fopen
FILE *fopen(const char *path, const char *mode);
字符串我知道fopen返回一个指向流的文件指针,但是文件描述符是作为副产品创建的吗?我试图确保在创建文件描述符的每个示例上都包含标志FD_CLOEXEC。如果文件描述符实际上是从fopen创建的,那么当没有“fd”作为输入时,使用fcntl()的最佳方法是什么?
FD_CLOEXEC
fcntl()
a9wyjsp71#
在Unix上(我假设你正在使用,因为你提到了fcntl),它 * 确实 * 打开一个文件描述符,因为fopen(3)最终调用open(2).。
fcntl
fopen(3)
open(2).
5gfr0r5j2#
从glibc 2.7开始,你可以直接将e字符添加到mode字符串中。man 3 fopen:e(自glibc 2.7起)使用O_CLOEXEC标志打开文件。有关详细信息,请参阅open(2)。fdopen()忽略此标志。
e
mode
2条答案
按热度按时间a9wyjsp71#
在Unix上(我假设你正在使用,因为你提到了
fcntl
),它 * 确实 * 打开一个文件描述符,因为fopen(3)
最终调用open(2).
。5gfr0r5j2#
从glibc 2.7开始,你可以直接将
e
字符添加到mode
字符串中。man 3 fopen:e(自glibc 2.7起)使用O_CLOEXEC标志打开文件。有关详细信息,请参阅open(2)。fdopen()忽略此标志。