В моей программе запущено несколько потоков, и я пытаюсь
прервать основной поток, чтобы заставить его делать что-то асинхронно.
Поэтому я установил обработчик и отправил основному процессу SIGUSR1 - см. Код
ниже:
def SigUSR1Handler(signum, frame):
self._logger.debug('Received SIGUSR1')
return
signal.signal(signal.SIGUSR1, SigUSR1Handler)
[signal.signal(signal.SIGUSR1, signal.SIG_IGN)]
В приведенном выше случае все потоки и основной процесс останавливаются - с 'c'
с этой точки зрения это было неожиданно - я хочу, чтобы потоки продолжались, как они
были до сигнала. Если я вместо этого вставлю SIG_IGN, все продолжится
хорошо.
Может кто-нибудь сказать мне, как это сделать? Может быть, я должен сделать что-то с «рамкой»
вручную, чтобы вернуться туда, где это было .. просто предположение, хотя
заранее спасибо
Спасибо за вашу помощь в этом.
Чтобы объяснить немного больше, у меня есть экземпляры потоков, записывающие строковую информацию в
сокет, который также выводится в файл. Эти потоки запускают свои таймеры, чтобы они
самостоятельно записать свои выводы в розетку. Когда программа запускается, я также вижу
их вывод на стандартный вывод, но все останавливается, как только я вижу строку отладки из сигнала.
Мне нужны темы, чтобы постоянно посылать эту информацию, но мне нужна основная программа для
принять команду, чтобы она также начала делать что-то еще (параллельно) некоторое время.
Я думал, что смогу послать сигнал из командной строки, чтобы вызвать это.