gpt4 book ai didi

bash - perl 脚本结束时会发生什么?

转载 作者:行者123 更新时间:2023-11-29 09:15:28 24 4
gpt4 key购买 nike

这个问题是特定于 perl 的,在上下文中我特别想知道当脚本 die 在句柄打开时文件句柄(操作和不操作)会发生什么。

那么当执行到脚本的最后一行时会发生什么操作?脚本级别? Perl 级别?外壳级别(例如 bash)?系统级(例如假设一个现代的 *nix,例如 Ubuntu)?

这是我目前找到的信息,但没有直接的答案:

Best practices for terminating perl scripts

Ensure custom code is run upon exit in perl

Why to close file handles in perl (sys buffers)

关于 dieexit 的 Perldoc 主要讲述了函数本身。

最佳答案

Perl 使用引用计数策略进行垃圾回收。当一个变量的引用计数达到 0 时,任何适用的 DESTROY 方法在将其内存释放给 perl 的内存管理系统之前被调用。

当您的程序终止时,它剩余的变量将超出范围并减少它们的引用计数。这是您的文件句柄将关闭的点。

当 perl 完成清理后,它将退回操作系统,此时它剩余的资源将返回给操作系统,并且它的父进程(可能是 init 或 shell)将被通知它的退出状态。


引用计数可能出错的地方:如果你创建一个带有循环引用的数据结构,没有一个组件变量的引用计数自然会下降到 0,除非你削弱其中一个引用或显式调用它的 DESTROY 方法。在这种情况下,变量将一直保留到程序结束,此时 perl 将DESTROY 和/或垃圾收集所有内容,而不管其引用计数。

关于bash - perl 脚本结束时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37199251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com