C++进程管理:Linux中的WinAPI "SetProcessShutdownParameters "?

C++ process management: WinAPI "SetProcessShutdownParameters " in Linux?

本文关键字:SetProcessShutdownParameters WinAPI 中的 进程管理 Linux C++      更新时间:2023-10-16

在Windows(7)中,在VC++中,我们可以设置"进程关闭参数"(在XP中,父进程将在子进程之前自动关闭),以确保父进程在子进程前面被杀死,如下所示:

GetProcessShutdownParameters(&shutdownlevel, &shutdownflags);
SetProcessShutdownParameters(shutdownlevel+1, SHUTDOWN_NORETRY);

如何在Linux(gcc)上的C++中做到这一点?我在许多论坛上发现了很多关于如何确保在父进程死亡的情况下杀死子进程的讨论(例如在Linux上使用prctl),但我没有发现关于如何确保父进程在子进程之前被操作系统杀死的讨论,就像上面针对Windows的讨论一样。也许它在Linux中是自动的?

Unix世界中的系统关闭工作方式有点不同。

当系统被关闭时,首先会调用关闭脚本,这些脚本处理任何复杂或耗时的任务,当脚本运行后,所有剩余的进程首先会被发送一个SIGTERM信号(它会杀死任何没有显式处理程序的进程),几秒钟后,会被发送SIGKILL信号(它杀死进程,无法处理)。

最后一部分发生的顺序未定义。

一般来说,应该编写程序,以便只需发送SIGTERM即可关闭程序。

我猜您希望父级在子级之前停止,因为父级只需重新启动子级即可。避免这种情况的正确方法是收集子进程的退出状态(无论如何都由您负责),并避免在退出状态指示进程因发送SIGTERM而结束时重新启动。

(您仍然希望在SIGKILL上重新启动,因为当系统内存不足时,最大的进程会发生这种情况)

相关文章:
  • 没有找到相关文章