Die не работает из Perl CGI - PullRequest
       30

Die не работает из Perl CGI

0 голосов
/ 09 декабря 2011

У меня есть Perl-скрипт, который порождается со страницы cgi и становится процессом демона, работающим самостоятельно Если из любого модуля, который он использует, вызывается die, скрипт вызывается, хотя он был обработан в блоке eval. Хотя, когда я запускаю скрипт из командной строки, все в порядке, и ошибка обрабатывается.

Примечание: из командной строки также сценарий становится демоном

1 Ответ

0 голосов
/ 10 декабря 2011

Извините, здесь нет реального ответа, но некоторые вещи, на которые стоит посмотреть ...

Если вы порождаете работу из mod_perl, запомните, что она более сложная, чем обычно.Вам нужно закрыть файловые дескрипторы, httpd / mod_perl будет иметь больше, чем просто 0, 1 и 2 открытых.Мы закончили тем, что написали циклы, которые просто закрыли от 0 до 255. Также я думаю, stdout - это не 1 из памяти.

Но не уверен, почему eval не будет работать.Вы порождаете свой сценарий, используя exec?В этом случае это должно быть так же, как запускать его из оболочки.Когда вы говорите, что его «убивают», вы имеете в виду, что из-за кубика выходит скрипт (как если бы не было ивала)?Или что-то другое.Если это что-то еще, вы могли бы наследовать обработчики сигналов от процесса httpd, в котором работает mod_perl?

...