Работа с процессами в C - PullRequest
       8

Работа с процессами в C

1 голос
/ 23 апреля 2010

просто быстрый вопрос относительно C и процессов. В моей программе я создаю другой дочерний процесс и использую двунаправленный канал для связи между дочерним и родительским процессами. Ребенок вызывает execl () для запуска еще одной программы.

У меня такой вопрос: я хочу, чтобы родитель подождал n секунд, а затем проверил, завершилась ли программа, запущенная ребенком, и с каким статусом. Что-то вроде waitpid (), но если ребенок не выходит через n секунд, я бы хотел сделать что-то другое.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2010

Вы можете использовать waitpid() с WNOHANG для опроса или зарегистрировать обработчик сигнала для SIGCHLD.

1 голос
/ 23 апреля 2010

Вы можете использовать будильник для прерывания waitpid () через N секунд (хотя не используйте этот подход в многопоточной среде)

   signal(SIGALRM,my_dummy_handler);
   alarm(10);

   pid_t p = waitpid(...);
   if(p == -1) {
     if(errno == EINTR) {
        //timeout occured
      } else {
        //handle other error
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...