Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Unix, C] Порождение 3х процессов-потомков


Автор: Kronit 22.4.2007, 12:44
Здравствуйте. Винституте задали задачку, вроде не сложную, но я что-то не сафсем понимаю как ее далать, а времени разбираться как всегда нет..(

    Написать программу, которая порождает 3 процесса-потомка. Каждый из этих процессов-потомков выполняет свою программу, запускаемую с помощью системного вызова exec() и завершаемую системным вызовом exit(код_возврата). Пусть процесс-предок дождется завершения (с помощью системного вызова wait()) всех своих процессов-потомков и выдаст их коды возврата.

просмотрев литературу, я более менее понял как создать и проконтролировать один процес:

Код

#include <stdio.h> 

#include <stdlib.h> 

#include <errno.h> 

#include <unistd.h> 

#include <sys/types.h> 

#include <sys/wait.h>    /*какие библиотеки подключать точно не знаю

int main() 

{ 

   int pid1;    /* идентификаторы процессов-потомков */
int status;    /* статус завершения процесса-потомка */
int ret = 0;    /* текущий возврат системного вызова wait */

switch(pid1=fork()) { 

  case -1: 

          perror("fork"); /* произошла ошибка */ 

          exit(1); /* выход из родительского процесса */ 

  case 0: // потомок         
                 
          execl("/usr/bin/date","date",0);
          exit(status); 

  default: // родитель        

          while(wait(&status))
          printf("PARENT: Код возврата потомка:%d\n",WEXITSTATUS(status)); 
         break;        
}
exit (0);
}


Честно говоря, работает это или нет я не знаю, так как юникса дома у меня нет.

Как мне создать ТРИ потомка, и так чтобы предок еще ждал завершения каждого из них..
я думаю, что не надо писать три таких switch. 

ЗАранее спасибо.

Автор: Alexeis 22.4.2007, 13:00
Модератор: выбирайте тип подсветки кода http://forum.vingrad.ru/index.php?showtopic=126445

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)