论fork()函数的进阶使用

今天复习期中考试,发现两个fork()的程序,都在for循环内,非常适合用来学习fork()的使用,多个子进程的创建

复制代码
 1 int main (){
 2     int i, x, f; 
 3     x = 1;
 4     for (i = 0; i < 3; i++) { f = fork ();
 5         if (f == 0) {
 6         x = x * 2;
 7         printf ("pid %d : %d\n", getpid(), x);
 8 
 9     }
10 }
11 return 0;
12 }
13     
复制代码

程序1

复制代码
 1   int  main ( void ){
 2         int  i, naptime ;
 3         for( i= 0 ; i< 4 ; i++)  if( fork ())  break ;
 4 
 5       srand ( getpid ());
 6       sleep ( naptime  =  rand ()% 4 );
 7 
 8        printf (" Mon  nom  est   <% c>,  "
 9                          "j’ ai  dormi  % d  secondes \ n ",’A ’+ i, naptime );
10 
11      exit( EXIT_ SUCCESS );
12   }
复制代码

程序2

其中,程序1的执行结果如下图:

 

 一开始非常疑惑···直到看了这篇文章:https://blog.csdn.net/jason314/article/details/5640969#commentBox,我才自己搞清楚是怎么回事

原理图:

 

 

 

而程序2执行后的进程图应该是这样的:

 

 

 

posted @   略略略——  阅读(240)  评论(2编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示