IT

forkdemo1.c

kio467 2014. 11. 11. 22:19

// 본격적인 shell 만들기에 들어가려면, 세가지가 필요합니다.


// 1. fork


// 2. exec


// 3. wait


// 그 중에 두번째인 exec를 먼저 해봤는데요,


// 이번엔  shell의 시작인 fork를 알아보도록 하겠습니다.


// 네... 뭐... 시작은 그리 어려운 코드가 아닙니다...


// 일단 이 코드를 실행하면 총 세 줄이 출력될 텐데요


// 비포 한 줄과 애프터 두 줄입니다.


// 포크는 실행한 시점에서 프로세스를 하나 더 만드는 시스템콜입니다.


// 아래 코드에서는 ret_from... 줄에서 프로세스가 하나 더 만들어지겠죠...


// 본래 프로세스 id가 467이라고 하면,

/**********************************

비포 467

애프터 467, 포크 468

애프터 468, 포크 0

************************************/

// 뭐 이런식으로 나오겠네요..



#include <stdio.h>

main()
{
    int ret_from_fork, mypid;
    mypid = getpid();
    printf("before %d\n",mypid);

    ret_from_fork = fork();
    sleep(1);
    printf("after %d, fork %d\n", getpid(), ret_from_fork);
}