Untitled

 avatar
unknown
plain_text
10 months ago
979 B
3
Indexable
#include <stdlib.h>
#include <stdio.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    int status;
    pid_t p0 = getpid(), p1 = fork();
    if (p1 != 0) {
        pid_t p2 = fork();
        if (p2 != 0) {
            waitpid(p2, &status, 0);
            waitpid(p1, &status, 0);
            printf("p1\n");
            exit(0);
        }
        pid_t p3 = fork();
        if (p3 == 0) {
            printf("p3 ");
            exit(0);
        }
        waitpid(p3, &status, 0);
        printf("p2 ");
        exit(0);
    }
    sleep(2);
    if (p1 == 0) {
        pid_t p5 = fork();
        if (p5 == 0) {
            printf("p6 ");
            exit(0);
        }
        waitpid(p5, &status, 0);
        pid_t p4 = fork();
        if (p4 == 0) {
            printf("p5 ");
            exit(0);
        }
        waitpid(p4, &status, 0);
        waitpid(p0, &status, 0);
        printf("p4 ");
        exit(0);
    }
}
Editor is loading...
Leave a Comment