Название: Работа с сигналами Отправлено: demaker от Май 07, 2018, 13:00 Написал простую программку для исследования работы сигналов в ОС Линукс
Вот код программы: main.cpp Код
mainwindow.cpp Код
thread.cpp Код
В начале создаются два окна - одно в родительском процессе, одно в дочренем. В конструкторе MainWindow создается поток, в теле которого может создаваться дочерний процесс, в котором происходит запись в файл. Так же мы можем по нажатию кнопки создать еще один дочерний процесс в котором происходит постоянная запись в файл. Есть обработчик сигналов, который обрабатывает сигналы SIGCHLD, SIGUSR1,SIGUSR2. Cоответственно номер SIGCHLD = 17 номер SIGUSR1 = 10 номер SIGUSR2 = 12 При запуске исполняемого файла из консоли, почему-то сначала появяляется только окно дочернего процесса и в консоль выводится Код: catch signal handler signal number = 17 Такое впечатление что были убиты какие-то дочерние процессы, хотя ничего такого не происходило. Если же запускать программу из-под креатора то все норм, в консоль креатора ничего такого не выводится и видно два окна(созданное в родительском и дочернем процессах) Правильно ли я понимаю, что обработчик сигналов sighandler(int sig) начинает работу после завершения QApplication::exec() Название: Re: Работа с сигналами Отправлено: qate от Май 07, 2018, 14:58 все подробно расписал, а проект не приложил на посмотреть, не копипастить же
гдето в статье https://www.macieira.org/blog/2012/07/forkfd-part-4-proposed-solutions/ были упоминания о сигналах, но может и не связано исследование ради какой цели делается ? Название: Re: Работа с сигналами Отправлено: demaker от Май 07, 2018, 15:08 все подробно расписал, а проект не приложил на посмотреть, не копипастить же гдето в статье https://www.macieira.org/blog/2012/07/forkfd-part-4-proposed-solutions/ были упоминания о сигналах, но может и не связано исследование ради какой цели делается ? Исследования делаются для себя, чтобы понимать как правильно работать :) Название: Re: Работа с сигналами Отправлено: qate от Май 07, 2018, 16:05 при запуске в консоли два окна и вывод:
catch SIGUSR1 handler signal number = 10 discribe signal: User defined signal 1 catch SIGUSR1 handler signal number = 10 discribe signal: User defined signal 1 какой дистр ? Название: Re: Работа с сигналами Отправлено: demaker от Май 07, 2018, 19:58 при запуске в консоли два окна и вывод: catch SIGUSR1 handler signal number = 10 discribe signal: User defined signal 1 catch SIGUSR1 handler signal number = 10 discribe signal: User defined signal 1 какой дистр ? xubuntu А обработчик сигналов сообщения выдае при обработке SIGCHLD, когда процессы убиваешь??? Название: Re: Работа с сигналами Отправлено: qate от Май 07, 2018, 20:23 Код: catch SIGUSR1 handler signal number = 10 какая xubuntu и версия qt ? Название: Re: Работа с сигналами Отправлено: demaker от Май 08, 2018, 09:54 какая xubuntu и версия qt ? Код: Distributor ID: Ubuntu Код: Based on Qt 5.7.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 bit) Название: Re: Работа с сигналами Отправлено: demaker от Май 08, 2018, 10:00 Код: catch SIGUSR1 handler signal number = 10 Т.е я так понимаю работает нормально все. А то у меня происходит обработка сигнала SIGCHLD, только после закрытия окна-процесса родителя. Название: Re: Работа с сигналами Отправлено: qate от Май 08, 2018, 12:19 можно попробовать обновить qt (или системно или с сайта qt)
обработка сигналов должна идти сразу после установки обработчика я ставлю обработчик после создания qapp, но он только для корректного выхода (по сигналам SIGINT и SIGTERM) Название: Re: Работа с сигналами Отправлено: demaker от Май 08, 2018, 13:07 можно попробовать обновить qt (или системно или с сайта qt) обработка сигналов должна идти сразу после установки обработчика я ставлю обработчик после создания qapp, но он только для корректного выхода (по сигналам SIGINT и SIGTERM) А код можно посмотреть :) Название: Re: Работа с сигналами Отправлено: qate от Май 10, 2018, 09:16 Код: void signalhandler(int sig) { этим обеспечивается и нормальный выход и в креаторе при запуске/остановки приложения по "красному" квадрату |