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

Unix kill命令是否确保动态分配的内存将正确返回?

发布时间:2020-12-15 22:31:56 所属栏目:安全 来源:网络整理
导读:我在新分配的项目中发现了一堆脚本,即“关闭”脚本.他们只是做一些基本搜索并运行Unix kill命令.他们有什么理由不应该这样关闭这个过程吗?这是否确保动态分配的内存将正确返回?还有其他负面影响吗?我在直觉下操作,这是终止进程的最后手段. 解决方法 kill
我在新分配的项目中发现了一堆脚本,即“关闭”脚本.他们只是做一些基本搜索并运行Unix kill命令.他们有什么理由不应该这样关闭这个过程吗?这是否确保动态分配的内存将正确返回?还有其他负面影响吗?我在直觉下操作,这是终止进程的最后手段.

解决方法

kill命令向Unix进程发送信号.该信号默认为SIGTERM,这是程序退出的礼貌请求.

当进程因任何原因退出时,Unix OS会清理其内存分配,文件句柄和其他资源.唯一没有被清理的资源是那些应该被共享的资源,比如文件和共享内存的内容(如System V IPC).

许多程序在退出时不需要进行任何特殊清理,并使用默认的SIGTERM行为,即让操作系统停止进程.

如果程序确实需要特殊行为,它可以安装信号处理程序,然后它可以运行一个函数来处理信号.

现在,SIGKILL信号(数字9)是邪恶的,但也是必要的.这个信号永远不会进入过程本身,操作系统简单地停止了该过程.这应该只在真正,非常必要的时候使用.在多线程程序中经常需要进入死锁或安装了TERM信号处理程序的程序,但在退出过程中搞砸了.

(编辑:李大同)

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

    推荐文章
      热点阅读