2017-06-13 9 views
0

私のアプリケーションは、systemdソケットの起動または(エンドユーザが選択した)サービスとして直接起動できます。前者の場合、私は自分のアプリケーションをコード化して、一定のアイドル時間後にシャットダウンするようにします(新しい接続を受け取るとsystemdによって再起動されます)。後者の場合、シャットダウンすべきではありません。systemd:アプリケーションでソケットの起動を認識する方法は?

私のアプリケーションは、「systemctl start myapplication」と比較して、ソケット起動によってsystemdによって起動されたかどうかを区別できますか?

システムログは私にヒントを与えませんでした。これら2つの起動ケースを区別することは可能ですか?

Al_

PSは:私のアプリケーションはC++/Qtの中に書かれているとsystemdに '通知' の方式を、次のとおりです。ケースには重要。

答えて

0

後者の場合、TCPソケットをリッスンする必要があります。だからできる場合そのソケットで聴くとsystemdはそうではないので、あなたはsystemdで始まらなかった。

+0

ありがとうございました。これは、ソケットがリッスンしていない場合にのみ機能します。ソケットが以前に起動されている場合( 'systemctl --user start myapplication.socket'またはログイン時に自動的に)、アプリケーションが開始された場合、アプリケーションはソケットをオープンできません。この動作は、アプリケーションがソケット起動によって直接起動されるか起動されるかにかかわらず同じです。 –

関連する問題