첫 번째 "프로세스"프로그램을 실행하려고하는데 다음 오류가 발생합니다.
./fork.c: line 4: syntax error near unexpected token `('
./fork.c: line 4: `int main()'
코드가 올바른지 확신합니다.
#include <sys/types.h>
#include <stdio.h>
int main() {
pid_t pid;
printf("Hello fork()\n");
switch(pid=fork()) {
case -1: printf("Error by fork().....\n"); exit(0);
case 0: printf("I'm the child process \n"); break;
default: printf("I'm the dad \n"); break;
}
exit(0);
}
뭐가 잘못 되었 니?
15
나중에 자신의 정신을 위해 "휴식"을 넣으십시오. "case -1 :"줄에 나중에 고마워 할 것입니다. 또한 자식 프로세스 호출 _exit (0) 및 부모 호출 exit (0)이 있어야합니다.
—
Bruce Ediger
@BruceEdiger 왜 필요한가
—
OrangeDog
_exit
? 등록 된 정리를 수행하는 데 어떤 문제가 있습니까?
exit (0)은 stdout 및 stderr을 플러시합니다. _exit (0)은 그렇지 않습니다. 프로그램이 fork ()를 수행 할 때 stdout에 약간의 바이트가 있고 자식이 exit (0)을 호출하면 이중 출력으로 끝날 수 있습니다. fork ()가 어떻게 작동하는지 배우기 때문에 왜 자신을 혼동합니까?
—
Bruce Ediger
@BruceEdiger 학습 방법
—
OrangeDog
fork()
에는 버퍼링 된 출력을 복사 할 수있는 학습이 포함됩니다. 상당히 복잡한 시스템 호출이기 때문에 학습 과정에서 약간의 혼란이 필요할 수 있습니다.