如果我正在编写一个Perl脚本,用STDOUT的副本覆盖STDERR,但我从不恢复文件句柄,那么在脚本执行结束时会发生什么?我找不到任何警告实际发生或不发生的事情。
我可能被误导了,但感谢您的耐心等待。
答案 0 :(得分:12)
当进程退出时,内核会恢复所有使用的资源。这包括所有文件描述符,它们只是简单地关闭。如果存在应用程序级缓冲区,则该缓冲区中的数据可能尚未写入内核,但在退出之前不存在保持文件描述符打开的风险。
如果你的Perl脚本以exec
启动另一个进程结束,那么该进程将继承所有文件描述符(exec上标记为close的那些文件描述符除外)。