C:关闭文件* - 不是文件描述符

  • 本文关键字:文件 描述 c fdopen
  • 更新时间 :
  • 英文 :


我想知道是否可以在不关闭底层文件描述符的情况下发布FILE包装器:

void stream_function( int fd ) {
    FILE * stream = fdopen( fd, "r");
    // Read from stream with fread / fscanf
    // then close the buffered stream object with the mythical
    // xclose( stream ) function, leaving the fd intact. 
    xclose( stream );  
}

int main( ) {
   int fd = open("filename" , flags);
   stream_function( fd );
   // Continue to use fd
   close( fd );
}

不是。您可以使用 dup2(fileno(f)) 保留文件描述符的副本,但本质上fclose(f)始终关闭fileno(f)

但是,在像您这样使用fdopen来获取FILE *的情况下,您可以在将其传递给fdopen之前dup2 fd。这可以防止原始 fd 在fclose时关闭。

相关内容

  • 没有找到相关文章

最新更新