Как заставить родительские процессы ждать, пока дети закончат sh, используя waitpid? - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу, чтобы родительские процессы (P1 и P2) ожидали завершения своих дочерних процессов (P3 и P4), используя waitpid ( в основном, родительские процессы могут завершаться только после завершения дочерних процессов ). Вот код ниже. Я португалец, извините за то, что в коде есть неанглийские sh слова.

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{
  int estado1, estado2;

  pid_t p = fork();
  pid_t k = fork();

  if(p>0) //Execução do pai
  {
    waitpid(p, &estado1, 0); //Don't know how waitpid works that well either
    waitpid(k, &estado2, 0);

    printf("p=%d: PID = %d;\t", p, getpid());
    // \t é para dar um tab (o que se usa nas indentações)

    sleep(45);

    printf("O processo pai terminou.\n");

    exit(0);
  }
  else if(p==0) //Execução do filho
  {
    printf("p=%d: PID = %d;\t", p, getpid());
    // \t é para dar um tab (o que se usa nas indentações)

    printf("O processo filho terminou.\n");

    exit(0);
  }
  else if(p<0)
  {
    printf("ERRO! p=%d\n", p);

    exit(p);
  }
}

Это то, что у меня есть, но я думаю, что это неправильно. Заранее спасибо. Редактировать: Спасибо zeroSpook за исправление моего текста:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...