Linuxでプログラムでサービスをロードする[閉じる]

Linuxでプログラムでサービスをロードする[閉じる]

サービス名(ユーザー作成)とそのパスが与えられた場合、C++Ubuntuのプログラムが実行時にそのサービスをロードして開始する方法は?

Windowsこれを行う、、などに似た機能はありますか?CreateServiceOpenSCManagerOpenService

ベストアンサー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 Env​​ironments)などの古典的な本を選択することもできます。 。 、BSD...)。

おすすめ記事