Process
僅對特定/專用 pid 執行程序
我有我想經常執行的 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
(其他使用者不應該寫)的內容做一些不正當的事情,你可能想要做一個更有力的驗證。