← All posts tagged ipc

fillest
Linux ? ipc Дано: процесс S; множество инстансов процесса W, выполняющих множество рахных тасков; sqlite-база для некоторого специфичного общения между S и W. Любой из W может грязно крашнуться в любой момент (и у S могут быть произвольные даунтаймы). W пишет некоторые данные в бд, S каждые n времени читает из бд.
Нужно: каждый процесс W должен уникально идентифицировать себя таким образом, чтобы S мог определить, не крашнулся ли конкретный W. При этом W не должны зависить от S.
Текущая идея: W создаёт файл с уникальным именем, flock'ает его (такой лок автоматически освобождается ведром при гибели процесса), пишет в бд имя файла, при нормальном завершении освобождает и удаляет файл. S во время очередной итерации при подозрении на краш W пробует flock'нуть тот же файл и таким образом развеивает/подтвержает своё подозрение.
Это будет работать, но кажется немного оверкиллом, может есть попроще способ? Что-нибудь вроде возможности записать строчку куда-нибудь в proc чтобы не создавать ничего руками?
fillest
? tech ipc concur Задаченька на прыще-ipc. Есть множество процессов-воркеров на одном хосте. Периодически в случайно выбранном из них запускается кот. Кот может работать дольше интервала запуска следующего кота (как cron), соотв. нужно предотвратить запуск следующего кота. Процесс с котом может быть жёстко ассасинирован в любой момент, например, oom-killer'ом. Соотв., нужно нечто, чистящееся ведром автоматически при таком раскладе.
Открывать на слушанье сокет это совсем быдло-вей. open("/tmp/lockfile", ... | O_EXLOCK)? Подводные камни (кроме вероятности удаления этого файла извне — её можно проигнорить)? Что-нибудь ещё?
На картинке кот по запросу "acne cat".