해바

Lab #10 본문

System Programming

Lab #10

Bacha 2019. 11. 18. 12:14

lab #9의 프로그램을 수정하여 다음의 프로그램을 작성하라 :

  • 부모 프로세스는 자식 프로세스들의 종료를 기다리면서 종료하는 각 프로세스를 식별하여 메시지("Parent: First(또는 Second) Child: ")와 함께 종료 상태(status)를 출력하는 프로그램을 작성하라.

 

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

int main() {
    int i = 0, status;
    pid_t pids[2];

    while(pids[i] = fork()) {
        if(i + 1 == 2) break;
        ++i;
    }

    switch (pids[i]) {
    case -1:
        perror("fork");
    case 0:
        switch (i) {
            case 0:
                execl("/bin/echo", "echo", "This is Child 1", (char*) 0);
                break;
            case 1:
                execl("/bin/echo", "echo", "This is Child 2", (char*) 0);
                break;
        }
        break;
    default:
        printf("Parent: Waiting for children\n");
        wait(&status);
        if(WIFEXITED(status)) printf("Parent: First Child: %d\n", WEXITSTATUS(status));
        else printf("Sig No.: %d\n", WTERMSIG(status));
        
        wait(&status);
        if(WIFEXITED(status)) printf("Parent: Second Child: %d\n", WEXITSTATUS(status));
        else printf("Sig No.: %d\n", WTERMSIG(status));

        printf("Parent: All Children terminated\n");
        break;
    }

    return 0;
}

 

컴파일 :

%gcc status.c

 

실행 :

%./a.out

'System Programming' 카테고리의 다른 글

Lab #12  (0) 2019.11.18
Lab #11  (0) 2019.11.18
Lab #9  (0) 2019.11.18
LAB #8  (0) 2019.11.18
Lab #7  (0) 2019.11.18
Comments