게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
fork()호출에대한 소스인데 설명좀가능할까요 ㅠㅠ
게시물ID : computer_43127짧은주소 복사하기
작성자 : 간지늅늅이
추천 : 0
조회수 : 202회
댓글수 : 2개
등록시간 : 2012/04/07 21:48:28
프로세스생성공부중인데......fork()함수를 공부하는데 어렵네요
아래 소스가어떻게 진행되는지에 대해서 알 수 있을까요 ㅠㅠ? 
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>

int g = 0;

int main(void)
{
    pid_t pid;
    int l = 100;

    printf("PID(%d): parent g = %d, l = %d\n", getpid(), g, l);

    pid = fork();

    if (pid < 0) {
      printf("fork error!");
      exit(1);
    }
    else if (pid == 0) {
      g++;
      l++;
      printf("PID(%d) %d: Child g = %d, l = %d\n", getpid(), pid, g, l);
    }
    else {

      printf("PID(%d) %d: parent1 g = %d, l = %d\n", getpid(), pid, g, l);

      wait ();
    }

    printf("PID(%d): g = %d, l = %d\n", getpid(), g, l);
    return 0;
}


이런 코드인데 결과가
PID(9785): parent g = 0, l = 100
PID(9785) 9788: parent1 g = 0, l = 100
PID(9788) 0: Child g = 1, l = 101
PID(9788): g = 1, l = 101
PID(9785): g = 0, l = 100
입니다.

fork()함수를 호출했다면 부모프로세스에는 CPID, 자식프로세스에는 0이 반환되야하는게 맞지않나요?
질문!

-for문도아닌데 반환값이 두개로 한다해도 5개나 출력이 어떻게 된 것인가요?
-진행순서가 어떻게 되는것인가요?? ㅠㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호