Обработка аварийного завершения программы при запуске как apache CGI - PullRequest
0 голосов
/ 02 июля 2019

У меня есть apache 2.2 со стандартным модулем cgi, который входит в комплект.Я сделал себе приложение cgi на C, которое взаимодействует с внешним оборудованием для одного пользователя и сделало вывод понятным для веб-сайта (это означает, что весь вывод находится в браузере).

Есть некоторые проблемы.

Моя программа включает в себя открытие файлов и устройств, а также блокировку памяти.При обычном выходе файлы и устройства закрываются, а память разблокируется.Там нет никаких проблем.

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

Хорошая особенность apache заключается в том, что когда возникает эта дилемма, apache завершает работу программы и отображает страницу с ошибкой, как и ожидалось.

Теперь вопрос в том, какой точный сигнал посылает apache программе, когда она ее завершает (из-за тайм-аута cgi)?Я чувствую, что мне нужно написать обработчик сигнала для выполнения моей задачи, если нет лучшего ответа.

И если я не выполняю обработку сигнала, блокируется ли автоматически блокируемая память системой?Я не хочу создавать утечки памяти.

Я использую функцию mlockall () для блокировки памяти.

...