프로그래밍/System Programming

Fork() 함수를 사용한 예제

Songker 2008. 10. 15. 17:50

#include <unistd.h>

int main(int argc, char **argv)
{

        pid_t retval;
        int status;

        if(argc!=2)
        {
                printf("사용법 : %s 디렉토리이름\n",argv[0]);
                return -1;
        }

        if((retval=fork())==0) // 자식 프로세서
        {
                if((retval=fork())==0) // 손자 프로세서
                {
                        printf("손자가 아래 명령을 실행합니다. \"mkdir %s\" \n",argv[1]);
                        execlp("mkdir","mkdir",argv[1],(char*)0);
                        exit(1);
                }
                else if(retval>0) // 아들 프로세서
                {
                        wait(&status);
                        printf("아들이 아래 명령을 실행합니다. \"ls %s\"\n",argv[1]);
                        execlp("ls","ls","-d",argv[1],(char*)0);
                        exit(1);
                }


        }

        else if(retval>0) // 부모 프로세서
        {
                wait(&status);
                {
                        printf("부모가 아래 명령을 실행합니다. \"rmdir %s\"\n",argv[1]);
                }
                execlp("rmdir","rmdir",argv[1],(char*)0);
        }
        return 0;
}

---------------------------------------------------------------------------------
fork()는 상당히 재미있는 함수같습니다....
fork()함수를 무한루프 돌린다면......???