Я как бы новичок во всех функциях fork
, exec
и wait
. У меня есть задание, которое требует I fork
моего основного процесса i раз, а затем использовать всех детей для записи на разные fifos для каждого процесса. Например, если у меня 3 ребенка, мне придется писать 3 разных филоса. Затем мой родительский процесс должен дождаться, когда первый закончит запись на любом fifo, и прочитайте данные из этого конкретного fifo. Что меня сбило с толку, так это то, что мой родительский процесс должен ждать завершения первого, а не для всех процессов. Если бы мне пришлось ждать все, я бы использовал while(wait(NULL)>0)
. Однако что вы делаете в этом случае? Я написал пример кода ниже:Несколько вилок, дождитесь окончания первого конца
pid_t *pid;
int i;
pid = malloc(sizeof(pid_t)*children);
for(i=0;i<children;i++)
{
if((pid[i]=fork())<0)
{ /* error */ }
if(pid[i]==0)
{
//WriteOnFifos
return 0;
}
else
{
//wait for the first process to finish
}
}
Заранее спасибо. Любая помощь будет оценена по достоинству.
Он даже не компилируется. 'fork' не является вызовом функции –
oops да, простите, я отредактирую –
Не просто редактируйте. Опубликуйте полный код. –