我正在尝试运行我的第一个“过程”程序,但出现以下错误:
./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
只是为了以后自己的理智,放置一个“ break”;在“情况-1:”行上。稍后,您将为自己感谢。另外,让子进程调用_exit(0),并让父进程调用exit(0)。
—
布鲁斯·埃迪格
@BruceEdiger为什么需要
—
OrangeDog 2012年
_exit
?进行已注册的任何清理有什么问题?
exit(0)将刷新stdout和stderr。_exit(0)不会。如果程序执行fork()且子代调用exit(0)时,stdout上有一些字节,则可以得到双倍输出。因为您正在学习fork()的工作原理,为什么要迷惑自己?
—
布鲁斯·埃迪格
@BruceEdiger学习如何
—
OrangeDog 2012年
fork()
工作包括学习它可以复制缓冲的输出。作为一个相当复杂的系统调用,在学习过程中可能会有些混乱。