2013-03-18 7 views
0

У меня есть консольное приложение, которое создает/запускает другие подпроцессы. Мне нужно как-то проверить, что сам или его ProcessChilds зашли в тупик и убили младшего из связанного с ним дерева процессов.Как самоубийство консольного приложения?

С этой целью, его процесс Чайлдс, может иметь один и тот же «вид рекурсивного» алгоритма.

Идея заключается в том, чтобы не убить младший процесс, но вместо того, чтобы получить младший до самоубийства по команде (в каком-то говорят).

Есть ли способ, я могу вызвать метод асинхронного внутри процесса (возможно, тот же метод, который должен существовать в его Чайлдсе), чтобы сделать это?

Ну, конечно, я мог бы использовать постоянный файл и «WatchDog/KeepAliveLook» этого файла, а когда он больше не существует, они делают это (самоубийство), но я убежден, что есть более чистый способ сделать это.

ответ

2

Я хотел бы использовать некоторый метод между proccess связи (Remoting, WCF, именованные каналы, окна событий, DDE и т.д.), чтобы отправить уведомление, чтобы «съесть яд таблетки». Большой вопрос - почему вы проектируете это как таковое? Звучит немного архаичная и устаревшая архитектура.

+0

Процесс с его детьми уже разработан и работает в производстве, я имею в виду только «отклеить» их из Интернета. Если есть способ перепроектировать систему, чтобы сделать ее более чистым, без большой работы, скажите мне, и я уверен, что возьму этот путь =) – apacay

0

Если процесс полностью заблокирован, вы не можете использовать ни один из его потоков. Вам нужно (внешне) создать новый поток в процессе, что может быть сделано только с помощью API отладки Windows.

Если вы хотите, чтобы убить дочерний процесс, то почему бы не убить его непосредственно, а не просить его, чтобы убить себя?

+0

Потому что я хочу, чтобы он сказал своему ребенку самоубийство, а не самоубийство, и только убить себя, если у него нет ребенка. – apacay