博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十八章:并发程序的基本实现( 多进程 )
阅读量:6450 次
发布时间:2019-06-23

本文共 1219 字,大约阅读时间需要 4 分钟。

前言

       Linux 是多道处理系统,当然能够在同一段时间内处理多个程序。

       本文将介绍具体该如何操作。

fork 函数

       此函数的作用是创建一个子进程,调用后,调用进程和创建的新进程就会并发执行( 从调用处开始 )。它调用一次,却返回两次,一次是在调用进程内,返回子进程ID,另一次是在创建的新进程( 子进程 )内,返回 0。

       函数的具体说明请参阅相关文档。

并发代码框架

1 #include 
2 #include
3 4 int main (void) { 5 6 int pid; 7 8 if ((pid = fork()) == 0) { 9 10 /* 11 * 此处填写子进程代码 12 */ 13 14 }15 else if (pid < 0) {16 17 /* 18 * 此处填写错误处理代码 19 */ 20 21 }22 else {23 24 /* 25 * 此处填写父进程代码 26 */ 27 28 }29 30 return 0;31 }

代码实现

  此程序将让两个进程交替的每隔 1 秒打印它们的各自进程 ID:

1 #include 
2 #include
3 4 int main (void) { 5 6 int pid; 7 8 if ((pid = fork()) == 0) { 9 while (1) {10 sleep(1);11 printf("I am %d \n", getpid());12 }13 }14 else if (pid < 0) {15 printf("创建子进程失败\n");16 return 1;17 18 }19 else {20 while (1) {21 sleep(1);22 printf("I am %d \n", getpid());23 }24 }25 26 return 0;27 }

运行测试

       

小结

       1. 本文讲述的是最简单最基本的并发实现,很多更复杂的并发实现都是基于这个框架的。

       2. 如果要确保子进程先运行,并且在启动子进程后立马 exec 一个新程序的话,请将 fork 换成 vfork。

转载地址:http://rzlwo.baihongyu.com/

你可能感兴趣的文章
推荐《认知与设计——理解UI设计准则》读书笔记
查看>>
Windows 2003 AD升级至Windows 2012 AD之DHCP服务器迁移
查看>>
创建和管理表
查看>>
手机视频开发包
查看>>
Nagios短信报警功能通过飞信实现
查看>>
活动目录系列之一:基本概念
查看>>
DNS原理介绍和具体搭建DNS
查看>>
通用的进程监控重拉起bash脚本
查看>>
MDOP中的诊断和恢复工具——DaRT
查看>>
mysql dba系统学习(17)mysql的备份和恢复的完整实践
查看>>
Flink SQL 功能解密系列 —— 流计算“撤回(Retraction)”案例分析
查看>>
MS虚拟化架构部署XenDesktop5系列五
查看>>
RHEL6.3 纯命令行文本界面下安装桌面
查看>>
正则表达式
查看>>
枚举 EnumDescription 位运算 权限 sql c#
查看>>
Properties 类的使用
查看>>
如何配置Ubuntu 16.04 GRUB 2引导加载程序
查看>>
iphone:数组的反序
查看>>
闲话WPF之十三(WPF中的资源)
查看>>
远哥Amoeba源码分析之:核心类说明
查看>>