// 이제 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 |