我有一個程序(Crafty象棋),從控制檯啓動時工作得很好。對於我的應用程序,我已將其進行了簡化。當守護進程時,應該通過chdir("/")
將工作目錄更改爲「/」。Linux守護進程:替代chdir(「/」)?
當我遵循該建議時,程序在某些用例中退出,因爲它在「/」中沒有適當的權限。當我不chdir
,該計劃的工作原理,但只是忽略chdir
是一個柺杖。
是否有替代遺漏chdir("/")
的聲音?
我有一個程序(Crafty象棋),從控制檯啓動時工作得很好。對於我的應用程序,我已將其進行了簡化。當守護進程時,應該通過chdir("/")
將工作目錄更改爲「/」。Linux守護進程:替代chdir(「/」)?
當我遵循該建議時,程序在某些用例中退出,因爲它在「/」中沒有適當的權限。當我不chdir
,該計劃的工作原理,但只是忽略chdir
是一個柺杖。
是否有替代遺漏chdir("/")
的聲音?
它可能不應該寫入當前目錄。相反,寫一些特定的目錄會更好。而不是cd到/tmp
並將文件寫入當前目錄,將文件寫入/tmp/whatever
—即始終使用絕對路徑。
並在相關說明中,如果可以避免,請勿硬編碼/tmp
。使其成爲配置選項,或者使用$TMPDIR
環境變量,或者最重要的是使用mktemp()
。
你可以調用daemon(3)功能(具有非零第一nochdir
參數),使其守護進程的過程,而不做chdir("/")
)
但約翰Kugelman建議,你不應該寫(也不會讀)的任何守護程序中的相對路徑(或者,您應該對可讀寫的目錄執行明確的chdir
搜索)。
你可以引用一個執行chdir(「/」)的建議來源嗎?我懷疑這是一個好主意(出於多種原因),並且有興趣知道這是建議的地方,爲什麼? –
你是什麼意思「它沒有適當的權限」?怎麼了?什麼不行? –
@RobKielty請參閱http://www.itp.uzh.ch/~dpotter/howto/daemonize。 「這可以防止當前目錄被鎖定,因此無法刪除它。」 –