Вопросы с тегом «signals»

Сигнал - это уведомление процессу о том, что произошло событие. Сигналы иногда называют программными прерываниями. Сигналы аналогичны аппаратным прерываниям в том смысле, что они прерывают нормальный поток выполнения программы; в большинстве случаев невозможно точно предсказать, когда придет сигнал. Они определены в стандартах C и расширены в POSIX, но многие другие языки / системы программирования также предоставляют к ним доступ.

614
Что убило мой процесс и почему?

Мое приложение работает в Linux как фоновый процесс. В настоящее время он запускается из командной строки в окне терминала. Недавно пользователь некоторое время выполнял приложение, и оно загадочным образом умерло. Текст: убитый был на терминале. Это случилось два раза. Я спросил, использует ли...

536
Как мне захватить SIGINT в Python?

Я работаю над сценарием Python, который запускает несколько процессов и соединений с базой данных. Время от времени я хочу убить скрипт с сигналом Ctrl+ C, и я хотел бы сделать некоторую очистку. В Perl я бы сделал это: $SIG{'INT'} = 'exit_gracefully'; sub exit_gracefully { print "Caught ^C \n";...

261
Как предотвратить SIGPIPE (или обращаться с ними правильно)

У меня есть небольшая серверная программа, которая принимает соединения через TCP или локальный сокет UNIX, читает простую команду и, в зависимости от команды, отправляет ответ. Проблема в том, что клиент может быть не заинтересован в ответе иногда и выходит рано, поэтому запись в этот сокет...

207
Можно ли перехватить сигнал Ctrl + C и запустить функцию очистки «отложенным» способом?

Я хочу захватить сигнал Ctrl+C( SIGINT), отправленный с консоли, и распечатать некоторые частичные итоги прогона. Возможно ли это на Голанге? Примечание: Когда я впервые опубликовал вопрос, я был озадачен тем, Ctrl+Cчто SIGTERMвместо того, чтобы быть...

196
TransactionManagementError «Вы не можете выполнять запросы до конца« атомарного »блока» при использовании сигналов, но только во время модульного тестирования

Я получаю TransactionManagementError при попытке сохранить экземпляр модели Django User, а в сигнале post_save я сохраняю некоторые модели, в которых пользователь использует внешний ключ. Контекст и ошибка очень похожи на этот вопрос django TransactionManagementError при использовании сигналов...

144
В чем разница между sigaction и signal?

Я собирался добавить дополнительный обработчик сигналов к приложению, которое у нас есть, и заметил, что автор использовал их sigaction()для настройки других обработчиков сигналов. Я собирался использовать signal(). Чтобы следовать соглашению, я должен использовать, sigaction()но если я писал с...

119
Обработка сигналов с несколькими потоками в Linux

Что происходит в Linux, когда программа (которая, возможно, имеет несколько потоков) получает сигнал, например SIGTERM или SIGHUP? Какой поток перехватывает сигнал? Могут ли несколько потоков получать один и тот же сигнал? Есть ли специальный поток, полностью посвященный обработке сигналов? Если...

92
Как я могу поймать SIGSEGV (ошибку сегментации) и получить трассировку стека под JNI на Android?

Я перемещаю проект в новый Android Native Development Kit (например, JNI), и я хотел бы поймать SIGSEGV, если это произойдет (возможно, также SIGILL, SIGABRT, SIGFPE), чтобы представить красивый диалог отчета о сбоях вместо (или раньше) то, что происходит в настоящее время: немедленная...

89
Сигналы Django против переопределения метода сохранения

У меня проблемы с осознанием этого. Прямо сейчас у меня есть несколько моделей, которые выглядят примерно так: def Review(models.Model) ...fields... overall_score = models.FloatField(blank=True) def Score(models.Model) review = models.ForeignKey(Review) question = models.TextField() grade =...

88
В каком порядке я должен отправлять сигналы для корректного завершения процессов?

В комментарии к этому ответу на другой вопрос комментатор говорит: не используйте kill -9 без крайней необходимости! SIGKILL не может быть перехвачен, поэтому убитая программа не может запускать какие-либо процедуры завершения работы, например, для удаления временных файлов. Сначала попробуйте HUP...

88
Правильное место для хранения моего файла signal.py в проекте Django

Основываясь на документации Django, которую я читал, кажется, signals.pyчто папка приложения - хорошее место для начала, но проблема, с которой я сталкиваюсь, заключается в том, что когда я создаю сигналы pre_saveи пытаюсь импортировать класс из модели, он конфликтует с importв моей модели. #...

86
Как избежать использования printf в обработчике сигналов?

Поскольку printfон не реентерабелен, его небезопасно использовать в обработчике сигналов. Но я видел множество примеров кода, в которых используется printfэтот способ. Итак, мой вопрос: когда нам нужно избегать использования printfв обработчике сигналов и есть ли рекомендуемая замена?...

85
Вызов pthread_cond_signal без блокировки мьютекса

Я где-то читал, что мы должны заблокировать мьютекс перед вызовом pthread_cond_signal и разблокировать мьютекс после его вызова: Подпрограмма pthread_cond_signal () используется для сигнализации (или пробуждения) другого потока, который ожидает переменной условия. Он должен вызываться после того,...

83
Django: сигнализировать, когда пользователь входит в систему?

В моем приложении Django мне нужно запускать несколько периодических фоновых заданий, когда пользователь входит в систему, и прекращать их выполнение, когда пользователь выходит из системы, поэтому я ищу элегантный способ получать уведомления о входе / выходе пользователя запросить статус входа...

81
Потоки и сигналы POSIX

Я пытался понять тонкости взаимодействия потоков POSIX и сигналов POSIX. В частности, меня интересуют: Как лучше всего контролировать, в какой поток доставляется сигнал (при условии, что это не фатально)? Как лучше всего сообщить другому потоку (который действительно может быть занят), что сигнал...