从来没有遇到过。
运行环境:在Linux自带的文本编辑器中输入C程序,在shell中编译运行,下面直接看代码和运行结果。
第一个代码:#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#define N 2
int main()
{
int i;
pid_t pid;
for(i = 0; i < N; i++)
{
pid = fork();
if(pid == 0)
{
printf(" %d ", 0);
exit(100+i);
}
else
flag: printf(" %d ", pid);
}
printf("over\n");
exit(0);
}
结果是:0 2571 0 2571 2572 over
第一段的结果在想了很久之后都没能想通,为什么第二个0后面会输出两个数呢?然后准备在flag标记的那个printf后加个"\n"让其格式整齐一点发到博客园上问大家呢,结果加了“\n”后输出的结果却是下面我写的那样,更迷糊了,希望哪位大侠知道帮忙解答一下。
第二段:把第一段的flag那行改为printf(" %d\n", getpid(), pid);
结果为:
0 2598
0 2599
over
经典的Fork解析:http://www.linuxdiyf.com/linux/12690.html
Linux进程之Fork函数:http://www.linuxdiyf.com/linux/11154.html
Linux0.11中的fork实现和一些注意事项:http://www.linuxdiyf.com/linux/8383.html
Linux基础知识:fork,vfork,exec:http://www.linuxdiyf.com/linux/5913.html
在Github和Git上fork之简单指南:http://www.linuxdiyf.com/linux/4822.html