여러개를 forking하려 할때.
글쓴이: pok / 작성시간: 화, 2005/11/22 - 5:54오전
스크립트를 읽어와 스크립트 개수대로 forking을 하려합니다.
pid_t afterForkPid = fork(); if (afterForkPid > 0){ if (argc != 2){printf("Please Check the parameter\n");exit(1);} lineNum = getLineNum(argv[1]); forkIndex = (pid_t*)malloc(sizeof(pid_t) * lineNum); forkIndex[0] = afterForkPid; for(int a=1; a < lineNum; a++){ //이미 한번 포킹 되었으니까 하나 적게 포킹. afterForkPid = fork(); if (afterForkPid == 0){free(forkIndex);break;}//자식 프로세스는 여기서 바로 나가기 forkIndex[a] = afterForkPid; } }
이상하게 fork하기전에 한 malloc이 자식프로세스에 생성이 되어서 메모리가 줄줄샙니다. 미봉책으로 break할때 free를 해줬는데, 생성되지 않아도 되는것이 생성된다는것은 역시 잘못된것 같은데요,
여러분들은 어떤식으로 요청에대한 forking을 하나요?
Forums:
[quote]fork하기전에 한 malloc이 자식프로세스에 생성이 되어
Child process는 parent process의 메모리 공간을 그대로 물려 받게 됩니다. 따라서 parent process가 malloc()한 영역은 child process에도 존재합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기