6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
|
||||||
1 | ||||||
Перевод процесса в zombie01.12.2011, 23:31. Показов 2726. Ответов 9
Метки нет (Все метки)
Всем привет Подскажите, пожалуйста, по поводу перевода процесса в zombie
вот есть прога, которая при завершении переходит в состояние zombie.
0
|
01.12.2011, 23:31 | |
Ответы с готовыми решениями:
9
процесс zombie Чтение памяти другого процесса по таймеру: нужно ли закрывать хэндл процесса? Завершение процесса при обнаружении другого процесса на .bat или .vbs Разработать три процесса: процесс-сервер и два процесса-клиента |
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
|
|
02.12.2011, 15:04 [ТС] | 3 |
ок, а можешь тогда подсказать, как это правильно сделать?
0
|
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
|
|
03.12.2011, 16:23 [ТС] | 4 |
парни, выручайте!!
0
|
12 / 12 / 0
Регистрация: 31.10.2011
Сообщений: 35
|
|
11.12.2011, 21:55 | 5 |
Теория говорит, что процесс становится зомби тогда, когда он завершается, а процесс-родитель не отловил возвращаемое им число. Однако, как только родитель сам завершается, то зомби переходит к init, и тот быстренько расправляется с ним. Вывод: чтобы породить зомби, нужно, чтобы child завершился, а родитель был еще жив. Если нужно временное существование зомби, то ставь в родителе sleep. Если постоянное, то нужно как остановить родителя на веки. while(1) - плохо, потому что будет жрать процессорное время. Что-то типа взаимной блокировки или бесконечного ожидания возврата из операции над каким-то файловым дескриптором.
0
|
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
|
|
12.12.2011, 00:33 [ТС] | 6 |
вопрос снят)
0
|
14 / 0 / 1
Регистрация: 11.12.2011
Сообщений: 29
|
|
26.12.2011, 00:56 | 7 |
а если поставить вопрос по-другому:
есть та же самая прога, но без while(1) она запускает, к примеру, два процесса можно ли что-то сделать, чтобы она перешла в zombie? ведь задача состояит в том, чтобы "запустить программу таким образом, чтобы после завершения она перешла в состояние zombie, а затем уничтожить zombie-процесс из командной строки shell"
0
|
Заблокирован
|
||||||||||||||||
26.12.2011, 14:50 | 8 | |||||||||||||||
надо бы сначала разобраться что из себя представляет зомби:
при завершении процесса вызывается одна из терминирующих функций из пользовательского пространства(или напрямую вызвать sys_exit), например exit(), но любая из них в итоге сделает sys_exit, которая делегирует работу do_exit. В ней особенно интересна строка, где вызывается exit_notify, потому что она превратит процесс в зомби
Памяти он не кушает, файлов открытых нети сигналы он обрабатывать не в состоянии, do_exit об этом позаботилась: 943 exit_signals(tsk); теперь надо выяснить, что пройзойдёт, если ты всё-таки попытаешься послать сигнал зомби с помощью kill: как видно из определения kill основную работу делает kill_something_info. В ней управление передаётся этой фунцкции. Ну и далее длинная цепочка вызовов kill_something_info->kill_pid_info->group_send_sig_info->do_send_sig_info ну тут собственно и конец
Добавлено через 6 минут не все ссылки не туда куда надо переносят, хотя может это только в опере так, там в адресной строке надо смотреть http://lxr.linux.no/#linux+v3.1.6/kernel/exit.c#L1011 и вручную переходить на 1011 строку если не совпадает
1
|
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
|
|
29.12.2011, 14:44 | 9 |
LosAngeles, спасибо, очень познавательно..
а ты не мог бы провести небольшой аудит моего кода? http://mbox.fpg.ru/basys/ - это доксиген-документация начинай копать с файла src/basys.c сказать, что нравится, что не нравится, дать пару советов, напутствий.. любая помощь пригодится..
0
|
Заблокирован
|
|
31.12.2011, 13:19 | 10 |
нет, я воздержусь
0
|
31.12.2011, 13:19 | |
31.12.2011, 13:19 | |
Помогаю со студенческими работами здесь
10
Порождение нового процесса и запуск программы в рамках порожденного процесса Как сверить имя процесса и путь основного процесса? Получить id процесса родителя, если исходный id процесса дочерний Завершение процесса при обнаружении другого процесса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |