C Как захватить закрытие терминала - PullRequest
1 голос
/ 02 июня 2011

Есть идеи о том, как захватить закрытие окна терминала, в котором запущена моя программа?Пока у меня есть какой-нибудь способ захвата, когда компьютер выключается, но программа все еще работает, или если пользователь выходит из системы?

Ответы [ 4 ]

2 голосов
/ 02 июня 2011

Если на Unix / Linux: вы смотрели на SIGTERM? Это как минимум тот, который был отправлен вам во время выключения.

2 голосов
/ 02 июня 2011

Вы можете попробовать функцию atexit ()? (см. Комментарии)

Или посмотрите этот пост здесь: Сигналы, полученные bash при закрытии терминала

2 голосов
/ 02 июня 2011

Попробуйте поймать SIGTERM.Обратите внимание, что вы не можете захватить SIGKILL, что может произойти во время выключения через определенное время.Я нашел этот действительно хороший пост , который также объясняет некоторые различия.

[обновление] Длинный снимок здесь, но как насчет тестирования, если std-in / out все еще открыт и хорош?Когда терминал умирает, эти файловые дескрипторы должны быть удалены.Отказ от ответственности, это предположение в лучшем случае.

1 голос
/ 02 июня 2011

Из моих тестов ... сигнал, который получает моя программа при закрытии терминала, равен 1 или SIGHUP

...