У меня есть apache 2.2 со стандартным модулем cgi, который входит в комплект.Я сделал себе приложение cgi на C, которое взаимодействует с внешним оборудованием для одного пользователя и сделало вывод понятным для веб-сайта (это означает, что весь вывод находится в браузере).
Есть некоторые проблемы.
Моя программа включает в себя открытие файлов и устройств, а также блокировку памяти.При обычном выходе файлы и устройства закрываются, а память разблокируется.Там нет никаких проблем.
Теперь, если внешнее оборудование отключено (что редко), программа останавливается навсегда, так как устройство подключено через последовательный кабель.Я перепробовал все возможные настройки termios, и использование неправильных настроек вернет неверные данные.
Хорошая особенность apache заключается в том, что когда возникает эта дилемма, apache завершает работу программы и отображает страницу с ошибкой, как и ожидалось.
Теперь вопрос в том, какой точный сигнал посылает apache программе, когда она ее завершает (из-за тайм-аута cgi)?Я чувствую, что мне нужно написать обработчик сигнала для выполнения моей задачи, если нет лучшего ответа.
И если я не выполняю обработку сигнала, блокируется ли автоматически блокируемая память системой?Я не хочу создавать утечки памяти.
Я использую функцию mlockall () для блокировки памяти.