본문 바로가기

컴퓨터/언어,프로그래밍

Linux system() 와 fork(), execl() 사용

// a.c

#include <stdio.h>

int main()
{
    printf("a : YoonByoungHoon\n");
    return 0;
}

// b.c

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>

int main()
{
    int status = 0;

    // system() 이용 - 쉘을 이용하기때문에 쉘환경에 종속적이어서 비효율적이다.
    pid_t parent, child;
    system("./a");
    printf("system()\n");

 

    // fork() and execl() - 쉘환경에 상관없이 자식 프로세스를 생성하여 실행할 수 있다.
    parent = fork();
    switch(parent)
    {
        case -1:
            perror("fork failed.");
            break;
        case 0:
            execl("./a", "a", "", 0);  // fork() 를 통해 자식프로세스를 생성하면 execl 로 새로운 일을 수행할 수 있다.
            break;
        default:
            break;
    }

    // 자식 프로세스가 일을 끝낼때까지 기다려 준다.
    child = wait(&status);


    printf("fork() and execl()\n");

    printf("Parent Process completed.\n");

 

    return 0;
}


'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글

fork() execl() wait()  (0) 2009.05.27
fork 함수와 wait 함수의 이해! 자식프로세스의 시작.. 그리고 끝!  (0) 2009.05.27
프로세스  (0) 2009.05.26
프로세스 입출력 popen  (0) 2009.05.26
C Standard Library  (0) 2009.05.26
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...