fork之后,代码等于克隆了2次,而且脱钩了,pid也不同,所以后来的那份不会执行xyz
代码段从fork开始复制,但是对于父,子进程来说,fork的返回值是不同的,所以后面的逻辑判断就会走入不同的分支。
"子进程是父进程的副本,子进程获得父进程数据段和堆栈段(包括I/O流缓冲区)的拷贝,但子进程共享父进程的代码段”,其实我就是纠结在这句话 的后半句是不是错了,我从那个例子看到的是 代码段其实也是拷贝 ,而不是它所说的共享?
因为abc后面你没有跟\nlinux下存在一个行刷新,abc一直留在缓冲区,所以父子进程都会读到,在子进程中abc留在缓冲区,但是在xyz之后的\n刷新了出来,父进程输入了一个\n刷新了缓冲区abc也就出来了