LINUX.ORG.RU

libdaemon как тян. не нужна?

 


1

3

Доброго времени суток!

После написания функционала демона решил покопаться в репозиториях в поисках готовых решений и нашел небольшую библиотечку libdaemon, в которой в принципе весь нужный функционал есть. Но вот вопрос: почему ни один пакет в системе от нее не зависит и разработка ее давно прекращена? такое ощущение, что каждый разработчик пишет демона для своих целей с нуля. Еще большим вопросом стало: почему systemd ее никак не использует, учитывая, что и то, и другое было разработано Поттерингом и ее функционал в systemd вроде бы лишним не является? Почему все признали ненужность этой либы?

★★

каждый разработчик пишет демона для своих целей с нуля

Я вам не скажу за всю Одессу, но у нас в команде так и есть.

почему systemd ее никак не использует

Поттеринга не пробовали спросить? Я без сарказма.

Почему все признали ненужность этой либы?

Скорее всего, нет больших преимуществ от её использования. Да и в некоторых ситуациях хочется чтобы проект тянул как можно меньше зависимостей. Так что проще делать форки и не заморачиваться со сторонними либами.

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

А почему тогда ее бы не включить в общий набор библиотек базовой системы в виде статика (один фиг - уже не обновляется, да и кода мало)?

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

уже не обновляется, да и кода мало

Есть у меня смутное предположение, что именно поэтому и не используют как отдельную библиотеку.

cPunk ★★ ()
Последнее исправление: cPunk (всего исправлений: 1 )
Ответ на: комментарий от beastie

Может вам ещё отдельный libprintf?

Тогда уж libwrite. Или она тоже уже есть?

anonymous ()

Попробуй формализовать понятие «демон», хотя бы на английском. Покрывая все известные кейсы(ну, или, хотя бы - большинство), на уровне необходимом для api.

Оцени трудозатраты.

Оцени трудозатраты более формального описания. И его продвижения.

N людей таки повелись и подписались, и даже мощи у них хватило это в дистр[ы] протолкнуть.

Потом они озадачились первыми двумя задачами.

Не то, что мелкомягкие. Но ща всякие д системы, всё исправят.

pon4ik ★★★★★ ()

Двойной форк — это «магия». Правильная реализация демонизирования двойным форком достаточно нетривиальна (к слову, daemon(3) делает не всё, что нужно, ref) и занимает лишнее время. Последнее в обычной жизни совершенно не важно, но когда ты пытаешься построить embedded-систему, которая запускается за полсекунды, это внезапно начинает играть роль.

В systemd реализован более простой механизм (Type=notify). Поэтому двойной форк не нужен.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 3 )
Ответ на: комментарий от d_a

Type=simple не даёт супервизору узнать об ошибках при старте демона (точнее, отличить их от ошибок при работе демона), поэтому он не рекомендуется.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1 )

Почему все признали ненужность этой либы?

Потому-что не нужна:

  • Для C++/C есть либо fork, если процессы нужны, либо pthread_create, если нужны потоки, либо вообще всякие высокоуровневые вещи по типу QThread.
  • Для остальных ЯП API для работы с потоками и процессами тоже есть.

А что тебе еще для демона нужно?

cherry-pick ()
Ответ на: комментарий от cherry-pick

логгирование и слежка за pid-файлом, но это делается просто. Немного более запарно делать самоотладку.

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

логгирование

Чем Boost.Log для крестов или log4j для жабки не устраивают?

слежка за pid-файлом

PID-файлы вообще костыль жуткий, можно просто проверять, а не сидит ли процесс с именем X уже в системе.

cherry-pick ()
Ответ на: комментарий от cherry-pick

а не сидит ли процесс с именем X уже в системе

Это очень замечательно для сферических процессов, которых нельзя запустить в одной и той же системе больше одного. Таких - мало.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от cherry-pick

PID-файлы вообще костыль жуткий, можно просто проверять, а не сидит ли процесс с именем X уже в системе.

И как же именно ты это выполнишь без advisory lock на PID-файле?

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

в эмбеддеде форки - зло. там памяти мало. и сишные библиотеки для эмбеддеда, как правило, хреново работают с форками. а vfork далеко не везде реализован.

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

Смотря что считать эмбеддедом - если малинку, то вообще пофигу на форки, ибо памяти там дохрена, а если всякие ардуинки, то, действительно, ожидает попаболь, ибо даже линукс там не стартанет, а если и стартанет, то памяти больше не останется.

aido ★★ ()

как тян. не нужна?

А может, ты обратно на двачик свалишь?

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