我正在为 Linux 开发,并且有一个守护进程,当它被杀死时应该写入磁盘。可以将守护进程配置为SIGTERM
在接收到该信号时侦听和写入磁盘。
我也熟悉登录管理器PrepareForShutdown
发出的 D-Bus 信号。与禁止关闭和监听信号相比,监听会产生更简单的代码。另一个优点是它可以处理守护进程被礼貌地杀死的情况,即使系统关闭也是如此。SIGTERM
PrepareForShutdown
SIGTERM
但是,我不确定依靠SIGTERM
内核在关闭时发送的信号有多安全。在关机时SIGTERM
总是发送给每个进程有足够的时间来执行一个小的(< 1 kB)写入磁盘?
我担心的一个问题是,我可能有足够的时间在某些硬件上写入磁盘,但在其他硬件上却没有,因此似乎很难测试。信号也可以这样说PrepareForShutdown
,但至少为磁盘写入留出足够的时间是该信号合同的一部分。SIGTERM
我的问题是每个进程在关闭时收到的信号是否可以这样说。