fork

来源:互联网 发布:python 服务器监控 编辑:程序博客网 时间:2024/06/10 01:50
1、fork函数原型:  pid_t fork( void);

2、fork函数的返回值:
      fork函数调用一次,返回两次(在新创建的进程中返回一次,调用fork的新进程返回一次)
      可能会有三种返回值:
       1)fork在子进程返回0
       2)在父进程中返回其子进程的pid
       3)如果出错,fork返回-1

3、fork的作用: 复制产生一个新进程,新进程为调用fork函数的这个进程的子进程。

4、父子进程:  fork之后,谁先运行,与操作系统的进程调度算法和当前计算机环境相关
                         父子进程独立,单独执行,运行顺序不唯一

5、格式:
     父进程和子进程都从fork之后的代码开始执行

     if(fork()==0)
     {子进程执行}
     else
     {父进程执行}

     父子进程都会执行

6、
程序一:


运行结果:AAB
程序执行流程如下:


程序二:


运行结果:AABBAB
程序执行流程如下:

去掉\n的结果:


运行结果:ABBABB

为什么去掉\n会产生这样的结果?这里主要涉及printf缓冲区的问题。

输出时先放在缓存区,遇到下面四种情况才输出:
1)遇到"\n";
2)fflush(stdout);
3)程序结束(exit或return);
4)缓存区满。



原创粉丝点击