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
时,加载新图像时,与流关联的所有缓冲区和状态信息都将被清除。他们就这样走了。任何待处理的缓冲数据或状态信息都将丢失。
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
时,加载新图像时,与流关联的所有缓冲区和状态信息都将被清除。他们就这样走了。任何待处理的缓冲数据或状态信息都将丢失。