Process

僅對特定/專用 pid 執行程序

  • May 29, 2014

我有我想經常執行的 ac 程序執行檔或 shell 腳本。如果我想停止/暫停或通知某事,我將向該程序發送信號。所以每次我必須檢查pid那個過程,我必須用它kill來發送信號。

每次我必須檢查 pid 並記住直到系統關閉時,真的很糟糕。我希望該程序必須像始終在 1 上執行一樣執行在pid特定位置init

有沒有為此的C api?並且還需要 bash 程序的腳本。

我認為您不能保留或分配 PID。但是,您可以在這樣的腳本中啟動您的流程:

myprocess &
echo "$!" > /tmp/myprocess.pid

這會創建一個“pid 文件”,正如其他人所指的那樣。然後,您可以使用 bash$(</tmp/myprocess.pid)$(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(其他使用者不應該寫)的內容做一些不正當的事情,你可能想要做一個更有力的驗證。

引用自:https://unix.stackexchange.com/questions/131514