Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизЗавершение дерева процессов Найти похожие ветки
← →
lmatveev (2004-02-26 20:03) [0]Как реализовать функцию "Завершить дерево процессов" (которая есть в диспетчере задач Win2000 и XP)?
Задача завершить процессы, которые порождаются моим процессом. Но мне надо завершить не только их, а и те, которые из них породились.
Если кто знает как это сделать, то интересно было бы также узнать об аналогичных возможностях (или их отстутствии) в других ОС.
← →
VMcL © (2004-02-26 21:27) [1]TlHelp32.pas: TProcessEntry32.th32ParentProcessID
← →
lmatveev (2004-02-26 21:55) [2]Т.е. если я правильно понял, надо получить список ВСЕХ процессов в системе, потом понять кто от кого порожден и в соответствующем порядке их прибивать? А попроще никак нельзя?
← →
VMcL © (2004-02-26 22:30) [3]>>А попроще никак нельзя?
AFAIK, нет.
>адо получить список ВСЕХ процессов в системе, потом понять кто от кого порожден
Не совсем. Только отсеять те, которые не являются "детями" нужного тебе "родителя".
← →
lmatveev (2004-02-26 22:43) [4]
> Не совсем. Только отсеять те, которые не являются "детями"
> нужного тебе "родителя".
Так в том то и дело, что "дети" нужного мне "родителя" тоже могут порождать процессы. Соответственно, мне сначала надо выстроить их иерархию, потом выкинуть те, которые вообще ко мне отношения не имеют, а уж потом прибивать снизу вверх...
И еще ведь нет гарантии, что пока я обрабатываю полученный список и пристреливую процессы из него, не создастся еще несколько новых процессов, которых у меня в списке не будет...
← →
Cobalt © (2004-02-27 11:12) [5]В виндах нет чёткой иерархии процессов.
Что ты будешь делать, если один из твоих потомков создаст свой потомок, а сам заверщится?
Связь между поколениями прервётся :(
И останется он (потомок во втором (или более) колене) болтаться неприкаянным.
← →
Игорь Шевченко © (2004-02-27 11:44) [6]Cobalt © (27.02.04 11:12)
> В виндах нет чёткой иерархии процессов.
Достаточно запустить Process Explorer от SysInternals и посмотреть на эту иерархию.
← →
Cobalt © (2004-02-27 11:46) [7]Извиняюсь, надо было слово чёткой выделить.
← →
Eagle-XK © (2004-02-27 16:35) [8]А что будет, если завершить не дерево, а просто сам небоходимый процесс? Так точно не покатит, ась?
← →
lmatveev (2004-02-27 17:36) [9]
> Eagle-XK © (27.02.04 16:35) [8]
Точно. Уже пробовал...
> Cobalt © (27.02.04 11:12) [5]
> И останется он (потомок во втором (или более) колене) болтаться
> неприкаянным.
И пусть болтается. Такие случаи я рассматривать не буду.
← →
DeadMeat © (2004-02-27 18:27) [10]А если у тебя выстроиться большое дерево, процессов так на 8-восемь и более и их родительский процесс закроется... Тогда как ты закроешь остальные...??
← →
lmatveev (2004-02-27 19:05) [11]
> DeadMeat © (27.02.04 18:27) [10]
Никак. У меня задача такая: Есть хэндлы процессов, которые я запустил. В определенный момент надо прибить то, что я запускал и то, что запускалось из тех процессов, которые я запускал. Если какие-нибудь из связующих процессов пристрялятся раньше - значит так тому и быть. Это, естественно, никак по другому не сделать
← →
DeadMeat © (2004-02-28 14:06) [12]В принципе, можно по таймеру проверять список процессов. При появлении нового, смотреть PID его родителя, если он известен (т.к. Есть хэндлы процессов, которые я запустил) то занести PID этого дитя в этот-же список. А потом убивать всех поочерёдности. Естественно, если какой-либо процесс исчез, то и его PID тоже надо убрать из списка.
Короче попробуй. Может получиться.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c