Linux应用程序分类与开发方法

2015-08-02 11:07王中丹刘诗楠
微处理机 2015年6期
关键词:服务程序后台进程

王中丹,刘诗楠

(1.辽宁广播电视大学信息工程学院,沈阳110034;2.广发银行股份有限公司沈阳分行,沈阳110000)

Linux应用程序分类与开发方法

王中丹1,刘诗楠2

(1.辽宁广播电视大学信息工程学院,沈阳110034;2.广发银行股份有限公司沈阳分行,沈阳110000)

Linux操作系统以其开放源代码资源和免费的特性,广泛应用在各种系统如台式计算机、大型机和超级计算机中。嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统,广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及工业控制、航空航天等领域。随着国内Linux应用的普及和水平的提高,使用Linux或嵌入式Linux作为操作系统,在其上面开发应用程序的越来越多。但是,如何开发Linux应用程序?Linux应用程序有哪些类型?在目前出版的刊物当中很少有这方面的内容,对于初学者来讲十分困惑。在此就作者本人在Linux和C语言方面的开发和教学当中的经验,就Linux程序的开发及编译、执行等过程,Linux和嵌入式开发的分类等进行一个介绍和说明。

服务器;客户端;套接字;监控;后台程序;编译;可执行文件;进程;嵌入式开发

1 嵌入式系统定义

首先,我们经常讲嵌入式开发,那么,什么是嵌入式系统?可能比较难回答,或者回答的不完全。一般来讲,嵌入式系统的定义为:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能[1]。为了区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。

2 嵌入式开发分类

从是否使用操作系统来讲,可以分为在操作系统上(常见的操作系统包括uClinux、Ubuntu、Fedora、OpenSUSE等)的开发和无操作系统的开发[1],这个分类主要是针对嵌入式开发而言。如以前的51单片机或ARM芯片上的开发,主要是在厂商提供的开发平台上直接用标准C语言进行编程,编程完毕以后,通过集成平台进行Debug,最后生成可执行文件[1],然后,将可执行文件直接烧写到芯片当中。这种开发基本上是在小型仪表或小型控制模块当中应用的比较多。应用程序规模比较小,功能单一。优点是由于没有操作系统,系统启动速度相对有操作系统来讲比较快[7]。

另外一种就是将标准Linux中不用的功能进行裁剪,只留下有用的功能,形成一个小操作系统,应用程序在标准Linux操作系统上进行编译和调试,然后,下载到嵌入式Linux上面进行调试和应用。这种应用程序由于是运行在Linux操作系统上,因此,可以实现更复杂的功能,但仍然主要是应用在工业控制当中。对于大型的应用软件来讲,主要是直接运行在没有裁剪的操作系统上[1]。

对于嵌入式操作系统来讲,由于裁剪了操作系统多余的功能,只保留了需要的功能,因此,这种系统的运行效率非常高,程序需要的资源也不多,是目前嵌入式开发采用的主要方法。但是,这种开发涉及硬件电路的设计制作及Linux操作系统的裁剪,对于这方面的技术要求比较高,需要有嵌入式硬件开发的专业技术人员进行硬件设计,然后,有嵌入式软件技术人员进行Linux的裁剪,最后,再由普通的C语言开发技术人员进行应用程序开发[1、7]。

3 应用程序分类

上面讲到了目前嵌入式开发的主流是在Linux操作系统上的开发,接下来介绍Linux应用程序的分类及开发方法。

(1)普通应用程序[2-3]

如下程序,等待从键盘输入2个自然数,然后,计算出两个数的平均数,并将结果打印在屏幕上。

如上程序,一般在Window上通过文本编辑器,保存到文件当中sample.c,然后通过ftp工具上传到Linux服务器上的用户开发目录,通过cc编译器进行编译,即可生成可执行文件。最后,在命令行执行可执行文件[1]。

该程序执行一次就结束了,这是最普通的Linux程序,通过cc编译器编译生成可执行代码,程序的启动通过命令行启动。

(2)带有界面的应用程序

最典型的就是Linux上面自带的计算器。当启动计算器以后,在Linux Desktop画面上出现一个计算器画面,在此输入数据进行计算,然后,显示出计算结果。如此,反复执行各种计算,只要不关闭画面,应用程序就一直在执行。这种应用程序的启动也是需要通过手动方法来启动。最早的Linux界面程序基本上是用X-Window方法来开发的,现在,主要采用QT来开发[1]。

(3)Linux后台服务程序

例如用户自己开发的一些如性能监控程序,当服务器启动以后,性能监控程序就一直在后台处于运行状态。当客户端连接到服务器以后,服务程序每隔一定时间间隔向客户端发送一次服务器的性能监控数据,当客户端断开连接以后,服务程序就处于等待状态。每隔一定时间收集一次性能监控数据,但是由于没有客户端连接,因此不向客户端发送数据。其它提供应用服务的程序都称为服务程序。如我们在百度搜索引擎画面输入一个关键字,执行搜索,一会儿就会在画面上显示好多搜索结果。这其实是画面向后台服务器提交一个搜索关键词请求,后台服务程序通过各种搜索方法执行搜索,然后,将搜索结果和超链接发送到前台,在画面上显示出来。我们常见的银行存取款系统是一个典型的C/S系统,客户端将账号和密码提交给后台服务器,后台服务器用账号和密码查询核心数据库,然后将该账户的金额等信息返回到柜台计算机,在柜台画面上显示,以进行存取款等各种操作[5]。

(4)Linux后台服务程序的特点

上面介绍了Linux服务程序,那么,Linux后台服务器程序有哪些特点?程序如何编制和编译?对于Linux系统服务程序来讲,常用的一个概念就是守护进程。这其实是一个典型的系统服务程序,在机器启动以后自动启动,并常驻内存,一直提供服务,也不需要手动启动。这种程序称为守护进程,比如,ftp、telnet等服务[4]。

守护进程是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。守护进程的三个最基本的特点是后台运行、独立于终端、完成一定的任务。

4 守护程序或服务程序的编程要点

编程要点如下:

(1)在后台运行;

(2)脱离控制终端,登录会话和进程组;

(3)禁止进程重新打开控制终端;

(4)关闭打开的文档描述符;

(5)改变当前工作目录;

(6)重设文档创建掩模;

(7)处理SIGCHLD信号。

如下是一个守护进程实例:

守护进程实例包括两部分:主程式test.c和初始化程式init.c。主程式每隔一分钟向/tmp目录中的日志test.log报告运行状态;初始化程式中的init_daemon函数负责生成守护进程。读者能够利用init_daemon函数生成自己的守护进程[4]。

5 服务程序的编译

关于服务程序的编译,可以采用Linux开发常用的方法进行[6],就是将所有相关联的文件及使用的库文件,写到Makefile当中,通过执行Make命令来将源程序编译成可执行文件[1]。

6 服务程序的启动

将执行文件的自动启动命令加入到Linux自动启动脚本文件当中,这样,当Linux操作系统启动完毕以后,服务程序会自动启动[1]。

7 结束语

以上是Linux服务程序的开发步骤,对于嵌入式开发系统来讲,编译命令不能直接使用Linux的gcc或g++来编译,而要使用对应嵌入式芯片提供的编译命令进行编译[8]。编译好以后,通过ftp命令下载到嵌入式主板,通过命令行赋予给服务程序可执行权限,然后,将启动命令加入到自动启动脚本即可。本文只介绍Linux服务程序的分类和嵌入式开发的步骤,具体每一部分的详细内容,请参照相关资料。

[1] 申华,刘龙,张云翠.嵌入式Linux系统软硬件开发与应用[M].北京:北京航空航天大学出版社,2013.

Shenhua,Liulong,Zhangyuncui.Development and application of hardware and software for embedded Linux system[M].Beijing:Beihang University Press,2013.

[2] Neil Matthew,Richard Stons,著.Linux程序设计[M].陈健,宋健健,译.北京:人民邮电出版社,2013.

Neil Matthew,Richard Stons.Beginning Linux Programming 4th Edition[M].Beijing:Posts&telecom Press,2013.

[3] 华清远见嵌入式培训中心.嵌入式Linux应用程序开发标准教程[M].北京:人民邮电出版社,2013.

China Huaqingyuanjian embedded training center.Linux application development standards tutorial[M].Beijing:Posts&telecom Press,2013

[4] 宋敬彬,孙海滨.Linux网络编程[M].北京:清华大学出版社,2010.

Songjingbin,Sunhaibin.Linux network programming[M].Beijing:Tsinghua university press,2010.

[5] 杨宗德.Linux高级程序设计(第2版)[M].北京:人民邮电出版社,2009.Yangzongde.Linux advanced programming[M].Beijing:Posts&telecom Press,2009.

[6] [美]施瓦兹,著.Linux应用程序开发[M].侯普秀,宋美娜,译.北京:清华大学出版社,2006.

(USA)Carl Albing,(USA)Michael Schwarz.Houpuxiu,Songmeina Translate.Linux Application Development[M].Beijing:Tsinghua university press,2006.

[7] [美]RobertLove,著.Linux内核设计与实现(第3版)[M].陈莉君,康华,译.北京:机械工业出版社,2011.

(USA)RobertLove.Design and development of Linux kernel[M].Beijing:Cina Machine Press,2011.

[8] 冯国进.Linux驱动程序开发实例[M].北京:机械工业出版社,2011.

Fengguojin.Linux Driver Development instance[M].Beijing:Cina Machine Press,2011.

Classification and Development Method of Linux App lication Software

Wang Zhongdan1,Liu Shinan2
(1.Information and Engineering Department,Liaoning Radio and TVUniversity,Shenyang 110034,China;2.China Guangfa Bank Shenyang Branch,Shenyang 110000,China)

Linux operating system is widely used in various systems such as desktop computers,mainframes and supercomputers because of its open source code and using free.The embedded Linux,as a system running on the embedded computer,ismodified by the popular Linux operating system,which is widely used in Mobile phones,Personal digital assistant(PDA),media player,consumer electronics,industrial control,aerospace and so on.With the popularity of domestic Linux applications and the improvement of the user level,more and more users are using Linux or embedded Linux as the operating system for application development.However,the beginners confuse and want to know how to develop Linux application and what the types of the Linux applications are.Itwould be very confused and puzzled for beginners.There are few relative contents in the journals.According to the experience of development and teaching about Linux and C language,development,compilation and execution process of programs for Linux,the classification of embedded development is described in this paper.

Server;Client;Socket;Monitor;Daemon;Compile;Executable-file;Process;Embedded Development

10.3969/j.issn.1002-2279.2015.06.017

TP3

B

1002-2279(2015)06-0062-03

王中丹(1962-),男,辽宁省锦州市人,副教授/硕士,主研方向:计算机软件开发。

2015-06-09

猜你喜欢
服务程序后台进程
SylixOS系统的中断嵌套机制研究与实现
基于C#的进程守护程序的设计
UDP穿透NAT技术实现数据唤醒车联网T-Box设备的方案
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
Wu Fenghua:Yueju Opera Artist
后台暗恋
后台朋友
水利工程施工监理服务程序及质量控制
后台的风景