2013-12-22 2 views
2

У меня есть 3 ребенка, которые заканчиваются в разное время в разном порядке каждый раз, но я не знаю, как получить, какой конец первыйКак узнать, какой ребенок вышел из C?

У меня есть что-то вроде этого, где «победитель», «второй» и «третий» случайный сгенерированный раз, то первое окончание «победитель», но я не знаю, кто это

wait(&winner); 
wait(&second); 
wait(&third); 
printf("======================================\n"); 
printf("----------Classification---------------\n"); 
printf("======================================\n"); 
printf("-First-.... Team %d , time: %d\n",/*1*/, WEXITSTATUS(winner)); 
printf("-Second-.... Team %d , time: %d\n",/*2*/, WEXITSTATUS(second)); 
printf("-Third-.... Team %d , time: %d\n",/*3*/, WEXITSTATUS(third)); 

ответ

7

Вы должны прочитать страницу человека из wait(2). Он возвращает pid_t ожидаемого процесса.

Возможно, вы также захотите использовать waitpidW_NOHANG, если вы не хотите действительно ждать блокирующим способом).

Также читайте signal(7). Вы можете обращаться с SIGCHLD ....

И Advanced Linux Programming имеет несколько глав, связанных с проблемой.

+0

Благодарим вас, работайте отлично, whit waitpid и функцию сравнения – jadelabe

Смежные вопросы