systemd:如何识别应用程序中的套接字激活?

问题描述:

我的应用程序可以通过systemd套接字激活或(最终用户的选择)直接作为服务启动。在前一种情况下,我喜欢对我的应用程序进行编码,在给定的空闲时间后它会关闭(一旦接收到新的连接,它将由systemd重新启动);在后一种情况下,它不应该关闭。systemd:如何识别应用程序中的套接字激活?

我的应用程序如何区分它是否由systemd通过套接字激活与'systemctl start myapplication'启动?

systemd日志没有给我提示。是否有可能区分这两个启动案例?

AL_

PS:如果它的问题:我的应用程序是用C++/Qt和遵循systemd '通知' 方案。

在后一种情况下,它将不得不侦听TCP套接字。所以如果你可以在那个插座上听,systemd不是,所以你不是由systemd启动的。

+0

谢谢。这只有在套接字不在监听的情况下才有效。如果套接字先前已经启动(使用'systemctl --user start myapplication.socket'或在登录时自动启动),随后启动应用程序,则应用程序无法打开套接字(已经打开)。无论应用程序是直接启动还是通过套接字激活启动,此行为都是相同的。 –