原文链接:http://blog.csdn.net/jason314/article/details/5640969#comments
总结:面宝P268
fork()的意思是进程从这里开始分叉,分成两个进程:一个父进程,一个子进程。子进程拷贝了父进程的绝大部分(栈、缓冲区等等)。虽然父子进程共享代码空间,但是在涉及写数据时,子进程有自己的数据空间。
父进程中fork()返回新建子进程的进程ID;子进程中fork()返回0;如果出错,fork()返回负值。
相关函数:getppid 获取父进程ID;getpid 获取本进程ID。
注意:父子两进程的执行顺序不固定,要看调度策略。
注意:
printf("fork!"); fork();
这段代码,缓冲区内的“fork!”也被子进程复制了,之后子进程打印也有fork!(这是我们不希望看到的),可做如下修改:
printf("fork! ");// 符号使得代码立即打印,同时缓冲区不再有fork! fork();