Linux守护进程:替代chdir(“/”)?

时间:2012-10-20 21:01:06

标签: linux daemon chdir

我有一个程序(Crafty chess)从控制台启动时工作得很好。对于我的应用程序,我已经守护它了。在守护进程时,应该通过chdir("/")将工作目录更改为“/”。

当我遵循该建议时,程序会在某些用例中退出,因为它在“/”中没有适当的权限。当我没有chdir时,该程序可以正常工作,但只是遗漏chdir就是一个拐杖。

是否有省略chdir("/")的声音替代方案?

2 个答案:

答案 0 :(得分:3)

可能不应该写入当前目录。写一些特定的目录会更好。而不是cd到/tmp并将文件写入当前目录,而是将文件写入/tmp/whatever - 即始终使用绝对路径。

在相关说明中,如果可以避免,请不要硬编码/tmp。使其成为配置选项,或使用$TMPDIR环境变量,或者最重要的是,使用mktemp()

答案 1 :(得分:0)

您可以调用daemon(3)函数(使用非零的nochdir参数),以便在不执行chdir("/")的情况下守护进程

但正如John Kugelman建议的那样,你不应该在守护程序中编写(或读取)任何相对路径(或者你应该对你可以读写的目录进行显式chdir)。 / p>