C++ 应用程序 - 如何 stop/cleanup 如果它是 运行 作为 Linux 服务?

C++ app - how to stop/cleanup if it is run as Linux service?

我基本上有一个用于 Linux CentOS9 的控制台 C++ 应用程序。我将使用 systemctl start/stop.

运行 它作为一项服务

目前,如果用户在控制台中按 Enter 键,应用程序将退出,但这在服务模式下是不可能的,因为用户在登录后不会看到应用程序控制台。

如何才能让应用程序检测到它正在 stopped/terminated 以便它可以清理资源(关闭文件)?

似乎 systemctl stop 发送了 SIGTERM。

只需为其注册回调

void signal_callback()
{
    printf("Process is going down\n");
}
signal(SIGTERM, signal_callback)

How systemd stop command actually works