2012-03-09 215 views
8

fopen的手册页我无法明确地回答这个问题。fopen是否创建文件描述符?

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

我明白fopen返回一个文件指针到流,但作为副产品创建文件描述符?我试图确保在每个创建文件描述符的实例上包含标记FD_CLOEXEC。如果文件描述符实际上是从fopen创建的,那么当没有“fd”用作输入时,使用fnctl()的最佳方式是什么。

谢谢。

回答

16

在Unix(我假设你正在使用,因为你提fcntl)它确实打开一个文件描述符,作为fopen(3)最终调用open(2).您可以通过fileno(3)获取文件描述符。