頻繁に実行したいACプログラム実行ファイルまたはシェルスクリプトがあります。何かを停止/一時停止または通知したい場合は、プロセスにシグナルを送信します。したがって、毎回プロセスを確認し、それを使用してシグナルを送信する必要がpid
あります。kill
毎回pidをチェックし、システムがシャットダウンするまで覚えておく必要がありますが、本当に迷惑です。pid
プロセスが特定のプラットフォームでのみ実行されることを望みます。init
常に1に走るのと同じです。
関連C APIがありますか?また、bashプログラムスクリプトも必要です。
ベストアンサー1
PIDを維持または割り当てることができないと思います。ただし、次のスクリプトでプロセスを開始できます。
myprocess &
echo "$!" > /tmp/myprocess.pid
これは他の人が述べたように「pidファイル」を生成します。その後、たとえば$(</tmp/myprocess.pid)
またはを使用してbashからインポートできます$(cat /tmp/myprocess.pid)
。
これを行うときは注意してください。プロセスが終了し、pidがリサイクルされると、誤った信号が送信されます。あなたは確認できます:
pid=$(cat /tmp/myprocess.pid)
if [ "$(ps -o comm= -p "$pid")" = "myprocess" ]; then
...send your signal...
else echo "Myprocess is dead!"
fi
"$(ps -o comm= -p "$pid")"
変だと思われる方はコメントをご覧ください。誰かがコンテンツに対して疑わしい作業をしている可能性がある場合/tmp/myprocess.pid
(他のユーザーがそのコンテンツに書き込んではいけません!)、より強力な検証を実行できます。