软件设计开发本栏目责任编辑:谢媛媛
嵌入式linux 多进程应用程序的设计与实现
张错玲1,孙宝法2
(1.安徽三联学院安徽合肥230001;2.安徽文达信息学院安徽合肥230001)
摘要:文章首先介绍了进程的概念,接着进行了多进程与多线程的比较,重点描述了多进程在linux 系统下程序设计实现及实验结果,最后进行总结并对未来课题的研究进行了展望。
Key words:多进程;多线程;库函数;linux ;fork 函数
中图分类号:TP316文献标识码:A
文章编号:1009-3044(2017)14-0081-02
linux下的sleep函数1概述
近年来,一些调查数据显示[1],linux 操作系统发展十分迅
速,虽然在桌面平台占有量不是很高,但在超级计算机领域linux 操作系统占据89%左右的市场份额;在嵌入式产品领域,由于Linux 自身的优良特性,以55%的市场份额遥遥领先于其
他嵌入式开发软件平台成为最适合嵌入式开发的操作系统[2]。
进行linux 系统下的高级编程,我们必然要谈到进程。所
谓进程是指可并发执行的、具有独立功能的程序在一个数据集
合上的运行过程,是操作系统进行资源分配和保护的基本单
位[3]。进程的概念是针对系统而不是针对用户的,与普通程序
相比,进程是一个动态实体,它因创建而产生,因调度而运行,
因等待资源或事件而处于等待状态,因完成任务而被撤消,所
以进程具有一定的生命周期。2多进程与多线程很多人在学习linux 编程时存在认识上的误区,认为用多线程好、比多进程快、可靠性高,这是非常错误的。网络上有人把多进程比喻成是立体交通系统,
虽然造价高,上坡下坡多耗点油,但是不堵车;多线程是平面交通系统,造价低,但红绿灯太多,老堵车[4]。我认为这比喻是非常形象、恰当的。线程和进程有各自的优缺点,具体表现如下:多进程:进程之间不共享数据,没有锁问题,结构简单,一个进程崩溃不影响全局,比较可靠;每个子进程都有2GB 地址空间和相关资源,总体能够达到的性能上限非常大;通过增加CPU ,就可以容易扩充性能。多线程:它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间;线程间具有非常方便的通信机制。但线程受限于2GB 地址空间;线程之间的同步和加锁控制比较麻烦;一个线程的崩溃可能影响到整个程序的稳定性。
综上表述可知,在我们进行编程的时候,要根据实际情况
进行判断,更适合使用哪种方法。
3Linux 下多进程程序设计首先在linux 系统命令行后输入以下内容:#cd /home #mkdir process #vi process.c 打开vi 编辑器后输入下列程序:#include <stdio.h>#include <stdlib.h>//标准库的头文件#include <signal.h>#include <sys/wait.h>//等待进程中断或结束int main(void){intpid;int status;int c;pid =fork();//fork ()函数通过系统调用创建一个与原来进程几乎完全相同的进程,pid 表示fork 函数返回的值if(pid<0){printf("fork error!\n");exit(1);//exit(0)表示进程正确返回值}else if(pid ==0){for(;;){printf("hel
lo!\n");sleep(3);//进程等待时间函数}}else {for(;;){c =getchar();if(c =='q'){kill(pid,SIGKILL);//将pid 进程进行终止收稿日期:2017-03-20
基金项目:省级精品资源共享课程——
《单片机原理与应用》(项目编号:2015gxk085)作者简介:张错玲(1982—),女,讲师,硕士,主要研究方向为计算机应用;孙宝法(1965—),男,安徽合肥人,博士,教授,主要研究方
向为计算机应用、计算机仿真、数学建模、物联网。
81DOI:10.14004/jki.ckt.2017.1540
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论