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

标签 unix memory-management operating-system kill

我在我新分配的项目中发现了一堆脚本,它们是“关闭”脚本。他们只是做一些基本的搜索并运行 Unix kill命令。他们有什么理由不应该以这种方式关闭进程?这是否确保动态分配的内存将正确返回?还有其他负面影响吗?我的直觉是,这是终止进程的最后手段。

最佳答案

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

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

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

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

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

关于unix - Unix kill 命令是否确保动态分配的内存将正确返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389927/

相关文章:

java - 将 Apache Velocity 与 StringBuilders/CharSequences 结合使用

当用户退出 UITableView 且 MBProgressHUD 在单独的线程中运行时,iPhone 应用程序崩溃

multithreading - 哪个Linux系统调用用于获取线程的ID?

php - 将 Apache 日志通过管道传输到 Google Analytics?

c# - 为什么 WeakReference 不是结构体?

node.js - 为什么在热循环中写入标准输出会导致内存不足关闭?

golang 在正在运行的二进制文件/进程上执行命令

unix - 坏 block : Resource busy while trying to determine device size

无法将 UNIX/Linux 程序编译为 32 位程序

image - 如何在终端中查找特定大小的图像?