int main(void) { int i; for (i = 0; i < 2; i++) { fork(); printf("-"); } return 0; }
分析:
for (i = 0; i < 2; i++) { fork(); printf("-"); } // 父进程0 fork(); // 创建子进程1 printf("-"); // 无'\n'刷新缓冲,被子进程2继承 fork(); // 创建子进程2 printf("-"); // 子进程1 printf("-"); // 无'\n'刷新缓冲,被子进程1.1继承 fork(); // 创建子进程1.1 printf("-"); // 子进程2 printf("-"); printf("-"); // 继承父进程0的缓冲区 // 子进程1.1 printf("-"); printf("-"); // 继承父进程1.1的缓冲区
for (i = 0; i < 2; i++) { fork(); printf("-"); }