#include<unistd.h>
int main()
{
pid_t pid;
printf("[%d]Begin!\n",getpid());
pid=fork();
if(pid<0)
{
perror("fork()");
exit(1);
}
if(pid==0) //chid
{
printf("[%d]:child is working!\n",getpid());
}
else //parent
{
printf("[%d]parent is working!\n",getpid());
}
printf("[%d]End!\n",getpid())
exit(0);
}在exit前加上 getchar让两个进程先不要结束。ps axf阶梯状关系
memcopy 连名字都一样。1号是祖先而非父进程
- 一般情况下 begin打印一次 end打印两次
- 若重定向到文件中。“./fork1 > /tmp/out
- 若begin没有\n,终端没有问题,文件有问题
- 正解:刷新所有成功打开的流,在printf之后。==
fflush(NULL);== - 文件全缓冲模式。begin写到缓冲区当中,还未来得及写入文件。马上fork,父子进程当中的缓冲区中各自都有begin.所以输出两次,但是父子进程的号。