fork() 함수 실행 시 함수가 두번 실행되는 문제..
글쓴이: jjim1014 / 작성시간: 금, 2015/04/10 - 3:01오후
#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<dirent.h> #include<fcntl.h> #include<string.h> #include<openssl/sha.h> #include<sys/types.h> #include<sys/stat.h> #include<sys/wait.h> #include<pwd.h> #include<time.h> void test(); void main(int argc, char *argv[]) { pid_t pid; int status; if(pid = fork() <0) printf("fork error.\n"); else if(pid == 0) //child process. test(); else waitpid(pid, &status, 0); } void test() { printf("{%d}child process.\n",getpid()); }
이렇게 코드를 짜면 test() 가 두번 수행이 되는데, 그 이유는 fork() 이하로 부모와 자식 프로세스가 각각 한번씩 수행하기 때문에 그런걸로 알고있습니다. 그런데 부모는 실행을 안하도록 하고 자식만 실행하도록 할 수 있는 방법은 없나요?
Forums:
...
pid = fork() < 0이라고 적으면
pid = (fork() < 0) 이렇게 해석됩니다.
원하시는 동작은 (pid = fork()) < 0 이렇게 하셔야 할 듯?
댓글 달기