Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ввести процесс в состояние зомби, как сделать это программно? 
:(
    Опции темы
banich
Дата 23.10.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.11.2005

Репутация: нет
Всего: нет



Есть задание: 
1)Реализовать программу, осуществляющую порождение нескольких процессов, запуск ими некоторой программы, и ожидание их завершения. Число порождаемых процессов и имя программы указывается при запуске.
2)Запустить программу таким образом, чтобы после завершения она перешла в состояние zombie, а затем уничтожить zombie-процесс из командной строки shell.

Собственно, вопрос по второму пункту. Как средствами С можно это все провернуть? Вроде это должно быть связано с сигналами, которые обрабатывают процессы... 

Всем заранее спасибо =)
PM MAIL ICQ   Вверх
Serge
Дата 23.10.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 6.6.2006
Где: Donetsk

Репутация: нет
Всего: 1



Марк Митчелл "Программирование для Linux. Профессиональный подход" ч. 1, главы 1 - 5. Читать до просветления... ;)
PM MAIL ICQ   Вверх
banich
Дата 23.10.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.11.2005

Репутация: нет
Всего: нет



Не поделишься е-версией на русском, если не сложно?
PM MAIL ICQ   Вверх
MAKCim
Дата 23.10.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата

2)Запустить программу таким образом, чтобы после завершения она перешла в состояние zombie, а затем уничтожить zombie-процесс из командной строки shell.

Если родительский процесс не опросит состояние завершенного дочернего посредством wait[pid/id], то он (child) на время перейдет в состояние зомби. После завершения родительского процесса (точнее в do_exit()) - произойдет смена родителя для всех дочерних процессов (notify_parent()). Этим новым родителем будет либо процесс из группы процессов родителя или init, который периодически вызывает wait[pid/id] для освобождения ресурсов, которые занимают зомби-процессы
Код

...
pid_t pid = fork();

if (pid > 0)
    _exit(0);      /* Завершение родителя */
else if (pid < 0)
    _exit(errno);

/* Тут твоя программа, после ее завершения процесс перейдет в состояние зомби */
...

Цитата

Реализовать программу, осуществляющую порождение нескольких процессов, запуск ими некоторой программы, и ожидание их завершения. Число порождаемых процессов и имя программы указывается при запуске.

Код

void call(int size, char* path) {
    pid_t pid;

    int count = 0;

    while (size--) {
 
        pid = fork();

        if (pid == 0) {

            if (strtok(path, "/") == NULL)
                execlp(path, path, NULL);

            execl(path, path, NULL);
        }
        else if (pid > 0) ++count;
    }
    while (count--) waitpid(-1, NULL, 0);
}

int main(int argc, char* argv[]) {
    if (argc != 3) return 1;

    int size = atoi(argv[1]);      /* Количество */
    char* path = argv[2];         /* Программа */

    call(size, path);

    return 0;
}


Это сообщение отредактировал(а) MAKCim - 23.10.2006, 18:10


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
banich
Дата 24.10.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.11.2005

Репутация: нет
Всего: нет



MAKCim, , большое спасибо за подробности smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.