如果你不在Perl中关闭文件句柄会发生什么?

时间:2013-01-02 16:44:14

标签: perl stdout stderr read-write filehandler

如果我正在编写一个Perl脚本,用STDOUT的副本覆盖STDERR,但我从不恢复文件句柄,那么在脚本执行结束时会发生什么?我找不到任何警告实际发生或不发生的事情。

我可能被误导了,但感谢您的耐心等待。

1 个答案:

答案 0 :(得分:12)

当进程退出时,内核会恢复所有使用的资源。这包括所有文件描述符,它们只是简单地关闭。如果存在应用程序级缓冲区,则该缓冲区中的数据可能尚未写入内核,但在退出之前不存在保持文件描述符打开的风险。

如果你的Perl脚本以exec启动另一个进程结束,那么该进程将继承所有文件描述符(exec上标记为close的那些文件描述符除外)。