unix fopen会创建一个文件描述符吗?

fquxozlt  于 5个月前  发布在  Unix
关注(0)|答案(2)|浏览(41)

查看fopen的手册页,我无法得到这个问题的明确答案。

FILE *fopen(const char *path, const char *mode);

字符串
我知道fopen返回一个指向流的文件指针,但是文件描述符是作为副产品创建的吗?我试图确保在创建文件描述符的每个示例上都包含标志FD_CLOEXEC。如果文件描述符实际上是从fopen创建的,那么当没有“fd”作为输入时,使用fcntl()的最佳方法是什么?

a9wyjsp7

a9wyjsp71#

在Unix上(我假设你正在使用,因为你提到了fcntl),它 * 确实 * 打开一个文件描述符,因为fopen(3)最终调用open(2).

5gfr0r5j

5gfr0r5j2#

从glibc 2.7开始,你可以直接将e字符添加到mode字符串中。man 3 fopen
e(自glibc 2.7起)使用O_CLOEXEC标志打开文件。有关详细信息,请参阅open(2)。fdopen()忽略此标志。

相关问题