Longobard
написал 27 февраля 2004 года в 21:38 (1183 просмотра)
Ведет себя
как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.
Вопрос к UT: как в Insight отлаживать демонов? А то когда прога форкаецца и родитель делает exit (0); дебаггер с чистой вовестью заканчивает работу. Инит демона такой:
void daemon_init(const char * pname, int facility) { int i; pid_t pid; if ((pid = fork()) != 0) exit(0); setsid(); signal(SIGHUP, SIG_IGN); if ((pid = fork()) != 0) exit(0); daemon_proc = 1; chdir("/"); umask(0); for (i = 0; i < MAXFD; i++) close(i); openlog(pname, LOG_PID, facility); }
Короче слизан подчитуюс со Стивенса (а нах изобретать велосипед :) ). Короче как мне дебажить потомка (демона)? А то делать постоянный флуд в логи уже запарило.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Ну, вообще-то insight — это фронтэнд к gdb, так что вопрос туда. Что я вижу в Гугле, это вот это
http://www.linux.org/docs/ldp/howto/GCC-HOWTO/x501.html
и еще один не очень плохой совет не выходить в процессах, а отправлять их спать (sleep).
А вообще, не сталкивался… Может, кто другой знает?
Good Luck,
UT
А зачем мне оставлять родительский процесс живым, если он больше нечего делать не должен? Какой смысл?
Теперь по теме. Спасибо UT. Теперь для тех кто с английским не в ладах разобраться хочет:
Надо вставить breakpoint на fork(), затем сделать return 0 (родитель завершит работу) и дебважить потомка. Такой вот кусок кода приведен в доке в качестве примера:
а можно и просто на время этот форк забить ….
и будет у тебя без форка демон одназадачный :) Ну забивай. А может вообще на демона забить? Еще меньше гемора будет ;)