Как использовать wait
? Это просто сбивает меня с толку до бесконечности. Я fork
создал дерево процессов с рекурсией, и теперь детям приходится приостанавливаться (ждать/засыпать), пока я запускаю pstree, чтобы я мог распечатать дерево процессов.
Должен ли я использовать
int status;
wait(&status);
или скорее
wait(NULL)
и куда мне это положить? в родительском if(pid > 0)
или в дочернем if(pid==0)
? Может быть, в конце ifs, поэтому я сохраняю все pid
в массиве, а затем запускаю над ними for
и использую ожидание?
мой шаблон кода:
void ProcRec(int index)
{
pid_t pid;
int noChild = getNChild(index);
int i= 0;
for(i = 0; i < noChild; i++)
{
pid = fork();
if (pid > 0)
{
/* parent process */
}
else if (pid == 0)
{
/* child process. */
createProc(index+1);
}
else
{
/* error */
exit(EXIT_FAILURE);
}
}
if(getpid() == root)
{
sleep(1);
pid = fork();
if(pid == 0)
execl("/usr/bin/pstree", "pstree", getppid(), 0);
}
}
sleep(/*How many seconds do you want to wait*/);
.sleep(1);
подождите 1 секунду. - person   schedule 17.05.2014wait
иsleep
страницы руководства. Я уверен, что вы найдете разницу довольно быстро. - person Some programmer dude   schedule 17.05.2014fork
. Я также различаюsleep
иwait
. Чего я не знаю, так это что такоеint status
, когда использоватьstatus
или когдаNULL
и где я долженwait
чтобы я мог использоватьpstree
- person jabk   schedule 17.05.2014