我用c语言在edison device中写了一个姿势感应代码。我已成功在启动时调用应用程序。但是我需要一个 shell 脚本来在断电时关闭这个应用程序。
我试过 kill {pid}
命令行操作。尽管我终止了命令,但在断电期间设备需要额外 5 分钟才能停止该应用程序。我在这里遗漏了什么吗..
最佳答案
您的应用程序应该显式处理一些 signal(7) -s,特别是 SIGTERM
在关机时发送(由某些系统程序执行 kill(2) )。
发送 SIGKILL
(例如 kill -9
或 kill -KILL
)是不安全的(特别是对于在磁盘上维护某些状态的服务器,例如数据库服务器,还有任何具有某种持久状态、配置或日志的软件......)因为被杀死的程序没有机会清理它的困惑,刷新它的缓冲区,并在磁盘上保存一致的状态。
所以稳健的策略是kill -TERM
,几秒后kill -QUIT
,几秒后kill -KILL
.因此,健壮的应用程序应该处理 SIGTERM
和 SIGQUIT
(但不能捕获 SIGKILL
)...
您可能会处理 SIGPWR
(但并非每个系统都有它或正确管理它;一些 UPS 硬件和软件有)。
关于c - 在 Linux 中关闭应用程序的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32560696/