int apipe[2]; // pipe(apipe); int nfilhos; // Assume-se que contém o número de filhos void terminating() { char data[nfilhos]; memset(data, 0, nfilhos*sizeof(char)); // Pode ser um ciclo que inicia o vector write(apipe, data, nfilhos); } // Função chamada por cada filho // Bloqueia até que um carácter esteja disponível no pipe // retorna o pid do pai int wait_parent() { char c; if (read(apipe, &c, sizeof(char)) == -1) return -1; return getppid(); }