0

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

当我遵循该建议时,程序在某些用例中退出,因为它在“/”中没有适当的权限。当我不这样做时chdir,程序可以工作,但只是省略chdir是一个拐杖。

有没有替代省略的声音chdir("/")

4

2 回答 2

3

它可能不应该写入当前目录。最好写到某个特定的目录。而不是 cd'ing 到/tmp当前目录并将文件写入当前目录,而是将文件写入/tmp/whatever- 即始终使用绝对路径。

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

于 2012-10-20T21:22:43.267 回答
0

您可以调用daemon(3)函数(使用非零第一个nochdir参数),以便它守护进程而不执行chdir("/"))

但是正如 John Kugelman 所建议的那样,您不应该在守护程序中编写(也不读取)任何相对路径(或者您应该对chdir可以读取、写入和搜索的目录进行显式操作)。

于 2012-10-21T06:39:47.747 回答