2010-09-16 2 views

ответ

2

Хорошо, как вы определяете разницу между застрявшим процессом и процессом, который занимает больше времени, чем обычно? Короткий ответ: Нет, вы не можете определить, застрял ли ваш дочерний процесс.

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

+0

Как использовать связь в случае вложенных подпроцессов? Причина, по которой я выбираю некоторый модуль в подпроцессе, и он делает свой собственный подпроцесс по очереди. – sultan

+2

Каждый процесс имеет родительский, а вложенные подпроцессы имеют родительский. Создайте трубы (IPC), как указано в ответе. Напиши и получай от них между процессами, и когда они сломаны, и вы не можете читать и писать от них, вы можете считать, что процесс висел. – pyfunc

+0

Теперь я буду заботиться о IPC. Thanx! – sultan

1

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

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

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

+0

Хорошо. Сначала мы можем установить тайм-аут по умолчанию, а затем при необходимости завершить процесс. Это правда? – sultan

+0

Да Но время ожидания по умолчанию может быть определено пользователем только в контексте. Как я уже упоминал в своем ответе: если вы вычисляете большие простые числа, это может занять много времени. Таким образом, контекст определяется тем, что делает программа, и разумным догадком о его заключении. – pyfunc

+0

Я пытаюсь использовать ядро ​​браузера для отображения некоторого содержимого внутри подпроцесса. – sultan

Смежные вопросы