必威体育Betway必威体育官网
当前位置:首页 > IT技术

fork()函数

时间:2019-10-14 17:12:17来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

fork函数

刚刚接触linux,感觉还蛮有意思的,Linux里一切皆文件,没有windows系统的傻瓜式操作,在Linux里面用指令控制感觉逼格一下上了一个档次,刚刚学习了fork函数,感觉挺值得来写一写的,虽然会写的很烂...

fork函数用于多进程编程,会产生父子进程,多个进程同时完成N个事务,提高执行效率。

说白了fork函数就是用来创建进程   pid_t  fork(void)

注意:fork函数调用一次返回两次(在新创建的进程返回一次,在调用fork的进程(就是原来的进程)返回一次,新进程(子进程)返回0,调用fork的进程(原来的进程即父进程))返回子进程的pid。

有人肯定会有疑问,为什么返回子进程的pid不返回父进程的pid?

因为子进程的pid没有函数可以得到,父进程的pid 可以通过ppid()这个函数得到,所以只能在最初获取子进程的pid,所以父进程返回值子进程的pid。

只是这么说还是很空的,不容易理解,下面写两个例子会帮助理解。

n=fork();  
if(n==0)  
{  
     printf("A\n");  
}  
else  
{  
     printf("B\n");  
}  
运行结果:B A 

 void main()
{
   int i=0;  
   for(;i<2;++i)  
   {  
  if(fork())  
    printf(“A\n”);  
  else  
    printf(“B\n”);  
   }  
}  
运行结果:三个A三个B,但顺序不一定。因为调用父子进程先后每台电脑是不一样,所以顺序并不一定。

void  main()
{
  int  i=0;
      for(; i < 2;i++)
    {
     if(fork)
       printf(“A”);
     else
       printf(“B”);
    }
}
运行结果:四个A四个B,顺序不一定。这个程序和上面那个程序就只差了'\n',但结果就不一样了,是因为结果存储在缓冲区,只有当缓冲区遇到\n才会将结果显示在界面上,否则就等程序运行结束或缓冲区满再显示到界面上。

***需要注意的是父子进程都从fork函数之后的代码开始执行,例如:

if(fork())

{}

else

{}

printf("hhhhh\n");

则结果打印出来不论是父进程还是子进程都会有hhhhh这句。

相关阅读

关于Python中rank()函数的理解

刚开始学习《利用Python进行数据分析》这本书,当学习到对Serises和Dataframe进行排名的时候,有些疑惑,去网上搜索了很多关于这方面的

文件大小单位转换函数-getFileSize($bytes)

function getFileSize($bytes){ if ($bytes >= pow(2,40)) { # code... $return = round($bytes/pow(1024, 4),2); $suffi

Excel求和公式函数的使用方法教程

有网友问到excel中能不能用函数求和,excel函数是很强大的功能,求和就不在话下了,在常用的Excel操作中,SUM求和是使用频率最高的一个函

python floor函数的用法

摘自《python程序设计基础》蔡永铭主编工具:python 3.7 64-bit官方链接:https://www.python.org/平台:Windows10floor函数的使用 在p

linux execl()函数

关于execl()函数族的用法不在赘述,其他博主介绍的很详细。下面说下作者在使用该函数时所犯的错误: 作者想通过使用execl()函数在子

分享到:

栏目导航

推荐阅读

热门阅读