exec()之后,child继承文件描述符,(但是所有流都不可访问?)

After exec(), child inherits file descriptors, (but all streams are inaccessible?)

http://man7.org/linux/man-pages/man3/stdout.3.html

最后一行 "but all old streams have become inaccessible" 到底是什么意思?据我目前所知,所有继承的句柄仍然可以使用。我错了吗?

我认为"old stream"表示"FILE *"结构。

exec后,所有用fopen打开的流(FILE *)将被关闭,所有文件描述符(int)将被继承。 您可以通过向文件描述符添加 FD_CLOEXEC 来更改文件描述符的继承行为。

文件描述符只是由操作系统管理的整数。它们不受 exec 的影响。另一方面,流(即 FILE *)是由库管理的缓冲区和状态信息的集合。它们充当文件描述符之上的一层。当调用 exec 时,加载新图像时,与流关联的所有缓冲区和状态信息都将被清除。他们就这样走了。任何待处理的缓冲数据或状态信息都将丢失。