少なくとも1つのファイルにpid番号を保存する必要があります。どうすればいいですか?
答え1
PIDファイルは、プロセス自体によって生成されるか、メインプログラムを起動した後にPIDファイルを作成するヘルパープログラムによって生成できます。
Unixファミリーシステムでは、通常、システムコールを使用してfork()
新しいプログラムを作成します。呼び出しプロセスのコピーを作成し、親プロセスでは子プロセスID(PID)を返し、子プロセスでは0を返します。親プロセス(ヘルパープログラム)はPIDをPIDファイルに保存できます。その後、新しいプログラムを起動するために使用されます。exec()
fork()
exec()
プロセスはgetpid()
システムコールを使用して独自のPIDを取得し、それをファイルに保存できます。
シェルでプログラムを起動している場合は、たとえばstart-stop-daemon
(Debianベースのシステムでは)プログラムを起動した後にPIDファイルを作成できるヘルパープログラムを使用できます。プログラムが自分自身を悪魔化している場合は、変数にアクセスしてシェルにPIDを保存することもできます$$
。