프로세스 개념
프로세스 실행중에 있는 프로그램 ID배정
fork는 프로세스 운영체젱서만 가능하다
fork는 자식 프로세스를 생성을 한다.
예를 들어서 A라는 프로세스가 구구단을 출력하는 프로그램이라고하면
자식 프로세스가 실행이되서
부모프로세스랑  동일한 코드를가지고 실행한다.

그래서 코드내에서 어떤게 부모인가 어떤게 자식인가 구분을 할수 있어야한다.
Fork에서 프로세스를 아이디값을 반환한다.
어떤것이 자식인가 볼려면 포크의 반환값이 0인것을 보면된다.
포크를 호출하고 나서 반환값을 가지고 부모자식간의 값을 구분을 해서
수행을 하면된다.

부모프로세스에서 포크로 자식 프로세스를 생성하면 부모는 포크아이디가 있지만
자식은 포크가없다.

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

main()
{
    pid_t pid;

    /* pid에는 fork의 반환 값이 저장되는데, 호출에 실패했을 경우에는 -1이 저장 */
    if ((pid=fork()) == -1)
       perror("fork failed");
    /* 이 조건이 참인 프로세스는 부모 프로세스인데, 부모 프로세스의
       pid 변수에는 0이 아닌 자식 프로세스의 프로세스 ID가 저장되기 때문 */
    else if (pid != 0)
       printf("parent process\n");
    /* pid가 0이라는 의미가 되므로 현재 프로세스는 자식 프로세스인데,
      자식 프로세스의 pid 변수에는 0이 저장되기 때문 */
    else
       printf("child process\n");
}

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

main()
{
    pid_t pid;

    /* pid에는 fork의 반환 값이 저장되는데, 호출에 실패했을 경우에는 -1이 저장 */
    if ((pid=fork()) == -1)
       perror("fork failed");
    /* 이 조건이 참인 프로세스는 부모 프로세스인데, 부모 프로세스의
       pid 변수에는 0이 아닌 자식 프로세스의 프로세스 ID가 저장되기 때문 */
    else if (pid != 0)
       printf("parent process\n");
    /* pid가 0이라는 의미가 되므로 현재 프로세스는 자식 프로세스인데,
      자식 프로세스의 pid 변수에는 0이 저장되기 때문 */
    else
       printf("child process\n");
}

      c 언어  |  2007. 9. 14. 11:52



sokoban's Blog is powered by Daum & Tattertools