Programa para crear cuatro procesos (1 padre y 3 hijos) donde terminan en una secuencia de la siguiente manera:
(a) El proceso padre termina al final
(b) El primer hijo termina antes que el padre y después del segundo hijo.
(c) El segundo hijo termina después del último y antes del primer hijo.
(d) El tercer hijo termina primero.
Requisito previo: tenedor() ,
// CPP code to create three child // process of a parent #include <stdio.h> #include <stdlib.h> #include <unistd.h> // Driver code int main() { int pid, pid1, pid2; // variable pid will store the // value returned from fork() system call pid = fork(); // If fork() returns zero then it // means it is child process. if (pid == 0) { // First child needs to be printed // later hence this process is made // to sleep for 3 seconds. sleep(3); // This is first child process // getpid() gives the process // id and getppid() gives the // parent id of that process. printf ( "child[1] --> pid = %d and ppid = %d\n" , getpid(), getppid()); } else { pid1 = fork(); if (pid1 == 0) { sleep(2); printf ( "child[2] --> pid = %d and ppid = %d\n" , getpid(), getppid()); } else { pid2 = fork(); if (pid2 == 0) { // This is third child which is // needed to be printed first. printf ( "child[3] --> pid = %d and ppid = %d\n" , getpid(), getppid()); } // If value returned from fork() // in not zero and >0 that means // this is parent process. else { // This is asked to be printed at last // hence made to sleep for 3 seconds. sleep(3); printf ( "parent --> pid = %d\n" , getpid()); } } } return 0; } |
Producción:
child[3]-->pid=50 and ppid=47 child[2]-->pid=49 and ppid=47 child[1]-->pid=48 and ppid=47 parent-->pid=47
Este código se ejecuta en la plataforma Linux.
Publicación traducida automáticamente
Artículo escrito por akanshgupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA