我有一个从控制台启动时运行良好的程序(Crafty chess)。对于我的应用程序,我已对其进行了守护。守护进程时,应该通过 .将工作目录更改为“/” chdir("/")
。
当我遵循该建议时,程序在某些用例中退出,因为它在“/”中没有适当的权限。当我不这样做时chdir
,程序可以工作,但只是省略chdir
是一个拐杖。
有没有替代省略的声音chdir("/")
?
它可能不应该写入当前目录。最好写到某个特定的目录。而不是 cd'ing 到/tmp
当前目录并将文件写入当前目录,而是将文件写入/tmp/whatever
- 即始终使用绝对路径。
/tmp
并且在相关说明中,如果可以避免,请不要硬编码。使其成为配置选项,或使用$TMPDIR
环境变量,或者最好使用mktemp()
.
您可以调用daemon(3)函数(使用非零第一个nochdir
参数),以便它守护进程而不执行chdir("/")
)
但是正如 John Kugelman 所建议的那样,您不应该在守护程序中编写(也不读取)任何相对路径(或者您应该对chdir
可以读取、写入和搜索的目录进行显式操作)。