簡體   English   中英

如果進程存在,kill(pid,0)是否保證返回0?

[英]Is kill(pid, 0) guaranteed to return 0 if a process exists?

我在Centos 4上,並在我的C ++程序中使用kill(pid,0)來檢查當前是否有一個進程正在運行給定的pid。 我開始懷疑存在一種競爭條件,即在一個過程開始后不久,有一個小的時間窗口,其中即使實際有一個進程正在運行,kill(pid,0)也不會返回零。

這是一個已知的問題? 當pid實際存在但剛剛啟動時,kill()是否會返回非零值? 如果kill()不是可靠的測試存在,有沒有更好的方法來執行此測試?

如果進程存在, kill(pid, 0)將僅返回0,並且您將能夠向其發送信號。 如果進程沒有像您一樣運行(並且您不是root用戶),則調用將因-EPERM而失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM