본문 바로가기

IT

waitdemo1.c

// 이제 shell 만들기 마지막 단계, wait 입니다.


// fork는 잘 이해하셨는지...


// 뭐.. 이해했으니 다음 단계로 넘어왔겠지


// 코드 봅시다.


// 일단 포크를 해요.


// 그리고 포크 에러 처리를 하고, 포크 한 값이 0이면 자식 프로세스니 그걸 처리하는 함수로 가고,


// 0이 아니면 부모 프로세스니 또 그걸 처리하는 쪽으로 갑니다.

/*절차지향이네요*/


// 자식 프로세스일 경우, 주어진 시간 기다린 뒤 - 여기선 2초로 define되어있네요- 종료하고


// 부모 프로세스일 경우, wait합니다. 자식프로세스가 종료 되면 한 줄 출력하는 것으로 마무리네요.


// 역시 그렇게 어렵지 않은 코드입니다.


// (하지만, exec나 fork, wait 모두 어떻게 사용하는지 반드시 익혀야 shell을 만들 수 있습니다.)


// (마치 스페인어 7과 다이얼로그처럼 중요한 것들 투성이군요)




#include <stdio.h>
#define delay 2
main()
{
    int newpid;
    void chile_code(), parent_code();
    printf("before %d\n", getpid());
    if((newpid=fork()) ==-1)
        perror("fork");
    else if (newpid==0)
        child_code(delay);
    else
    parent_code(newpid);
}

void child_code(int dly)
{
    printf("child %d here. will slep for %d seconds\n", getpid(), dly);
    sleep(dly);
    printf("child done. about to exit\n");
    exit(17);
}

void parent_code(int childpid)
{
    int wait_rv;
    wait_rv = wait(NULL);
    printf("done waiting for %d. wait returnde %d\n", childpid, wait_rv);
}

'IT' 카테고리의 다른 글

psh2.c  (0) 2014.11.11
waitdemo2.c  (0) 2014.11.11
forkdemo1.c  (0) 2014.11.11
psh1.c  (0) 2014.11.11
before & after.c  (0) 2014.11.11