Mih*_*yan 1 c++ unix posix file pipe
如果我以这种方式在 unix 中创建管道:
int fds[] = {0, 0};
pipe(fds);
Run Code Online (Sandbox Code Playgroud)
然后,使FILE *
从fds[0]
这种方式:
FILE *pipe_read = fdopen(fds[0], "rt");
Run Code Online (Sandbox Code Playgroud)
那么我应该如何关闭这个文件(pipe_read
)?
fclose(pipe_read)
pclose(pipe_read)
close(fileno(pipe_read))
fdopen
返回 aFILE*
所以你应该fclose
这样做。这也将关闭底层文件描述符。
该pclose
调用旨在关闭使用 . 创建的句柄popen
,该函数用于运行命令并通过管道连接到它。
该close
调用将关闭底层文件描述符,但不幸的是,在文件句柄有机会刷新其数据之前 - 换句话说,您可能会丢失数据。