Tony还真是好了伤疤忘了疼,前两天那两行丢人的代码要不要帮你翻出来再研究研究?整天就知道不知所云的说大话却一点真本事都没有,上面说的就好像你真会用几个命令似的,而且你这些废话能帮助楼主解决问题么?
一看见这些扯淡的废话就烦。还是说说楼主的疑问。
楼主的代码会输出6次"-"。原因:
1、父进程在i=0时启动一个子进程(设为1号子进行程),之后输出一个"-" ,在i=1时再启动一个子进程(2号),之后输出一个"-"。
2、子进程(1号)启动后复制父进程的栈(i=0),输出一个"-",之后i++,i=1时再启动一个子进程(3号),之后输出一个"-"。
3、子进程(2号)启动之后(i=1),输出一个"-",之后i++,i=2,退出循环进面结束进程。
4、子进程(3号)启动之后(i=1),输出一个"-",之后i++,i=2,退出循环进面结束进程。
综上,一共输出6个"-"。
如果将fork();与printf("-\n");这两句调换位置,则输出的是3个"-"。
楼主代码验证的只是fork函数复制进程的效果,事实上fork更有意思的一个特性在于它将返回两次(一次在父进程中,一次在子进程中)。