LINUX.ORG.RU

Ответ на: комментарий от bj

Ты перепутал с man 2 flock ))

В таком случае это не мой вариант. Нужно исключить возможность в том числе и ручного запуска мимо инит-скрипта.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от bj

Я кстати не помню, если приложение внезапно обрушилось и не закрыло семафор, он так и останется висеть открытым?

bj ()
Ответ на: комментарий от bj

Может быть есть ещё смысл обработать ситуацию, когда лок файл есть но демон помер. Например при помощи ps.

sin_a ★★★★★ ()
Ответ на: комментарий от bj

POSIX named semaphores have kernel persistence: if not removed by sem_unlink(3), a semaphore will exist until the system is shut down.

Бугога, ну ты в общем понел.

bj ()
Ответ на: комментарий от sin_a

Может быть есть ещё смысл обработать ситуацию, когда лок файл есть но демон помер.

flock (который man 2) лочит на время жизни процесса.

bj ()
Ответ на: комментарий от hateyoufeel

В таком случае это не мой вариант. Нужно исключить возможность в том числе и ручного запуска мимо инит-скрипта.

Некорректно сформулированное требование. Ты явно что-то делаешь не так.

Deleted ()

Я себе вот такой велосипед сделал. И использую в других вещах (с вариациями). Простая проверка: pid-файл + одноименный процесс. Еще иногда делаю flock на бинарь.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от hateyoufeel

Есть разница между самим существованием семафора и его локом.

All open named semaphores are automatically closed on process termination

Да, это правда.

or upon execve(2).

А вот тут внимание, семафор надо открывать уже после демонизации. А то время как flock наследуется.

Тогда единственная неприятность, надо линковаться pthread. Хотя в большинстве случаев оно и так уже есть.

bj ()
Ответ на: комментарий от bj

семафор надо открывать уже после демонизации

Демонизация и execve тащем-то ортогональны.

hateyoufeel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.