サービス名(ユーザー作成)とそのパスが与えられた場合、C++
Ubuntuのプログラムが実行時にそのサービスをロードして開始する方法は?
Windows
これを行う、、などに似た機能はありますか?CreateService
OpenSCManager
OpenService
ベストアンサー1
まず、ここではなく StackOverflow にある必要があります。
Windowsが知っているサービスの全体的な概念は、Linuxには存在しません。
Windowsでは、プロセスはサービス制御マネージャ(SCM)がサービスを初期化および制御するために使用するコールバックを登録します。これにより、一時停止、停止、開始、再開などのサービスに関してSCMに送信された要求を処理できます。
Linuxではこの概念は存在しません。最も近いのはデーモンとして実行されるプログラムです。
すべてのプログラムは、親プログラム(二重分岐を介して)または端末から分離することを選択できます。これが基本的にUnixのデーモンの鍵です。バックグラウンドプロセスですが、Windowsとは異なり、特別な第三者が関与していません。
ほとんど終わりました。このinit
プロセスによってプロセスが収集され、終了後も保持されません。また、通常、一部のinitスクリプト(古いスタイル)またはinitシステム(systemd、upstartなど)は特殊な構文を使用してプロセスを制御します。そのために、ほとんどのデーモンには、スクリプトがそのファイルからプロセスID(PID)を読み取れるようにファイルに保存し、そのプログラムを使用してデーモンkill
(つまりバックグラウンドプロセス)を制御する信号を送信するオプションがあります。 。たとえば、設定を再読み込みまたは停止します。
することができます本当にMichael Kerriskの著書「LinuxおよびUNIXシステムのプログラミングに関する確実なガイド」を購入して読むことを望み、開発を別のUnixoidプラットフォーム(OSX)に拡張する予定であれば、APUE(Advanced Programming in Unix Environments)などの古典的な本を選択することもできます。 。 、BSD...)。