论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执行后的进程图应该是这样的:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!