Linux-демон: альтернатива chdir("/")?

У меня есть программа (Хитрые шахматы), которая отлично работает, когда запускается с консоли. Для моего приложения я его демонизировал. При демонизации процесса предполагается изменить рабочий каталог на "/" с помощью chdir("/"),

Когда я следую этому совету, программа закрывается в некоторых случаях, потому что у нее нет необходимых разрешений в "/". Когда я не chdir, программа работает, но просто уходит chdir это костыль.

Есть ли разумная альтернатива опусканию chdir("/")?

2 ответа

Решение

Вероятно, не следует писать в текущий каталог. Вместо этого лучше написать в какой-то конкретный каталог. Вместо того, чтобы перейти к /tmp и запись файлов в текущий каталог, запись файлов в /tmp/whatever Всегда использовать абсолютные пути.

И на связанной ноте, не жестко /tmp если вы можете избежать этого. Сделайте это параметром конфигурации или используйте $TMPDIR переменная окружения, или лучше всего, использовать mktemp(),

Вы можете вызвать функцию daemon(3) (с ненулевым первым nochdir аргумент), так что это демонизирует процесс, не делая chdir("/"))

Но, как предлагает Джон Кугельман, вы не должны писать (или читать) какой-либо относительный путь в демонизированной программе (или вы должны сделать явный chdir в каталог, который вы можете читать и писать и искать).

Другие вопросы по тегам