加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:56:39 所属栏目:安全 来源:网络整理
导读:这个问题特定于perl,在我特别想知道文件句柄会发生什么变化的情况下(无论是否操作),在某些时候脚本会在句柄打开时死掉. 那么当执行到脚本的最后一行时会发生什么操作?脚本级别? Perl级别?壳牌水平(例如bash)?系统级别(例如假设现代* nix,如Ubuntu)? 这
这个问题特定于perl,在我特别想知道文件句柄会发生什么变化的情况下(无论是否操作),在某些时候脚本会在句柄打开时死掉.

那么当执行到脚本的最后一行时会发生什么操作?脚本级别? 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)

死亡和退出的Perldoc主要讲述功能本身.

解决方法

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

当程序终止时,其余变量将超出范围并使其引用计数递减.这是您的文件句柄将关闭的点.

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

引用计数可能出错:如果使用循环引用创建数据结构,则除非您削弱其中一个引用或显式调用其DESTROY方法,否则任何组件变量都不会自然地将其引用计数降为0.在这种情况下,变量将持续到程序结束,此时perl将DESTROY和/或垃圾收集所有内容,无论其引用计数如何.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读