Свяжите жизнь процесса к оболочке, которая запустила ее

Я попробовал большую часть материала, описанного здесь. Я использовал VWD и значение по умолчанию web.config содержавший файл:

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

я изменил режим = "RemoteOnly" к режиму = "Прочь". Все еще никакая радость. Я тогда использовал менеджера по IIS, свойства, Вкладку ASP.NET, конфигурацию Редактирования, затем выбрал вкладку CustomeErrors. Это все еще показало RemoteOnly. Я изменил это на Прочь, и наконец я видел подробные сообщения об ошибках.

, Когда я осмотрел web.config, я видел, что было два узла CustomErrors в system.web; и я только что заметил, что вторая запись (тот, который я изменял, был в комментарии). Так попытайтесь не использовать блокнот для осмотра web.config на удаленном сервере.

Однако при использовании материала конфигурации редактирования IIS он будет жаловаться на ошибки в web.config. Тогда можно исключить все ответы, в которых говорится, "там синтаксическая ошибка XML в web.config"

8
задан Kyren 4 December 2009 в 18:27
поделиться

4 ответа

Если ваша оболочка не является подоболочкой, вы можете сделать следующее; Поместите следующее в сценарий под названием "ttywatch":

#!/usr/bin/perl
my $p=open(PI, "-|") || exec @ARGV; sleep 5 while(-t); kill 15,$p;

Затем запустите вашу программу как:

$ ttywatch commandline... & disown

Отказ от процесса не позволит оболочке жаловаться на запущенные процессы, а когда терминал закрывается, это вызовет SIGTERM ( 15 ) для доставки в подпроцесс (ваше приложение) в течение 5 секунд.

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

2
ответ дан 6 December 2019 в 00:07
поделиться

Ваша оболочка должна посылать сигнал SIGHUP всем запущенным дочерним процессам при завершении работы. Пробовали ли вы добавить в приложение обработчик SIGHUP, чтобы его закрыть? когда оболочка выходит?

0
ответ дан 6 December 2019 в 00:07
поделиться

Хорошо, я думаю, что понял это. Я сделал это слишком сложным :)

Я думаю, что весь db2 демонтирует db2bp, затем db2bp вызывает waitpid для родительского PID (PID оболочки) и завершает работу после возврата waitpid.

Связь между командой db2 а db2bp, похоже, выполняется через fifo с именем файла, основанным на PID родительской оболочки.

Ваааай проще, чем я думал :)

Для всех, кому интересно, вся эта попытка заключалась в том, чтобы связать питон или отличный интерактивный сеанс в оболочку,

2
ответ дан 6 December 2019 в 00:07
поделиться

Возможно ли, что ваша настоящая проблема здесь в оболочке, а не в вашем процессе. Я согласен с мнением Джима Льюиса о том, что, когда оболочка умирает, ее дочерние элементы должны получать SIGHUP. Но на что вы жалуетесь, так это на то, что оболочка (или, возможно, терминал) пытается помешать вам случайно убить запущенную оболочку с активными дочерними элементами.

Рассмотрите возможность чтения руководства для оболочки или терминала, чтобы узнать, можно ли настроить такое поведение .

Из руководства bash на моем MacBook:

По умолчанию оболочка закрывается при получении SIGHUP. Перед выходом ко всем работам, запущенным или остановленным. Остановленные задания отправляются SIGCONT, чтобы убедиться, что они получают SIGHUP. Чтобы чтобы оболочка не отправляла сигнал определенному заданию, его следует удалить из таблицы заданий с помощью встроенная команда disown (см. ВСТРОЕННЫЕ КОМАНДЫ ОБОЛОЧКИ ниже) или помеченная как не принимающая SIGHUP с помощью disown -h.

Если параметр оболочки huponexit был установлен с помощью shopt, bash отправляет SIGHUP всем заданиям, когда интерактивный оболочка входа завершается.

, что может указать вам правильное направление.

0
ответ дан 6 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: