




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.1守护进程简介Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。有些书籍和资料也把守护进程称作:“服务”。选择运行哪些守护进程,要根据具体需求决定。2.2守护进程特征:1.所有守护进程都以超级用户(用户ID为0)的优先权运行。2.没有一个守护进程具有控制终端终端名称设置为问号,终端前台进程组ID设置为-1.缺少控制终端可能是精灵进程调用setsid的结果。3.除update以外的所有精灵进程都是进程组的首进程,对话期的首进程,而且是这些进程组和对话期中得唯一进程。Update是它所在进程组和对话期(中得唯一进程,但是该进程组的首进程(可能也是该对话期的首进程)已经终止。)4.所有这些守护进程的父进程都是init进程。2.3守护进程编程规则(5步)(1)创建子进程,父进程推出:首先调用fork,然后使父进程exit。实现了:1,如果该守护进程是一个简单shell命令启动的,那么父进程终止使得shell认为这条命令已经执行完成。2,子进程继承父的进程组ID,但具有一个新的进程ID,保证子不是进程组首进程。这对于下面就要做的setsid调用是必要的前提条件。(2)调用setsid以创建一个新的会话,并且担任会话组组长。调用setsid作用:1,脱离以前的会话组;2,脱离以前的进程组;3,脱离以前的控制终端。(3)改变当前目录为根目录 Chdir(“/”);(4)重设文件权限掩码 Umask(0);(5)关闭不再需要的文件描述符。For(i=0;iMAXFILE;I+)Close(i);3.1syslog函数说明Openlog函数用于打开系统日志服务(Linux系统中的日志子系统对于系统安全来说非常重要,它记录了系统每天发生的各种各样的事情,包括那些用户曾经或者正在使用系统,可以通过日志来检查错误发生的原因,更重要的是在系统受到黑客攻击后,日志可以记录下攻击者留下的痕迹,通过查看这些痕迹,系统管理员可以发现黑客攻击的某些手段以及特点,从而能够进行处理工作,为抵御下一次攻击做好准备。)的一个连接;Syslog函数用于向日志文件中写入信息,在这里可以规定消息的优先级,消息的输出格式等;Closelog函数用于关闭系统日志服务的连接。4.共享内存共享内存实现分为两个步骤:一, 创建共享内存,使用shmget函数。二, 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。5.消息队列消息队列就是消息的一个连接,它允许一个或多个进程向它写消息,一个或多个进程从中读消息。具有一定的FIFO的特性,但是可实现消息的随机查询。这些消息存在于内核中,由“队列ID”来标识。消息队列的实现包括创建和打开队列,添加消息,读取消息和控制消息队列这四种操作。Msgget:创建和打开队列,其消息数量受系统限制。Msgsnd:添加消息,将消息添加到消息队列尾部。Msgrcv:读取消息,从消息队列中取走消息。Msgctl:控制消息队列。Linux的系统调用与文件IO1.1, linux系统调用 所谓系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务。系统调用,api与系统命令之间的关系2.3open函数(如果文件不存在则创建,如果文件存在则打开)#inlude#inlude#inludeInt open(const char *pathname, int oflag,/*,mode_t mode*/); / const是一个C语言的关键字,它限定一个变量不允许被改变返回:若成功为文件描述符,若出错为-1Pathname是要打开或创建的文件的名字。Oflag参数可用来说明此函数的多个选择项。对于open函数而言,仅当创建新文件时才使用第三个参数。用下列一个或多个常数进行或运算构成oflag参数(这些常数定义在头文件中):O_RDONLY只读打开。O_WRONLY只写打开。O_RDWR读,写打开等等2.4creat函数可用creat函数创建一个新文件#inlude#inlude#inludeInt creat(const char *pathname,mode_t mode);返回:若成功为只写打开的文件描述符,若出错为-1.注意,此函数等效于:open(pathname,O_WRONLY| O_CREAT| O_TRUNC,mode);creat的一个不足之处是它以只写方式打开所创建的文件。2.5close函数可用close函数关闭一个打开文件:#inludeint close(int filedes);返回:若成功为0,若出错为-1 当一个进程终止时,它所有的打开文件都由内核自动关闭。很多程序都使用这一功能而不显式地用close关闭打开的文件。exit(1)/exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出2.6lseek函数每个打开文件都有一个与其相关联的“当前文件偏移量”。它是一个非负整数,用以度量从文件开始处计算的字节数。通常,读,写操作都从当前文件偏移量处开始,并使偏移量增加所读或写得字节数。按系统默认,当打开一个文件时,除非指定O_APPEND选择项,否则该位移量被设置为0.可以调用lseek显示地定位一个打开文件。#inlude#inludeOff_t lseek(int filesdes,off_t offset,int whence);返回:若成功为新的文件位移,若出错为-1.对参数offset的解释与参数whence的值有关。若lseek成功执行,则返回新的文件位移量,为此可以用下列方式确定一个打开文件的当前位移量:off_t currpos;currpos=lseek(fd,0,SEEK_CUR);2.7read函数用read函数从打开文件中读数据#includeSsize_t read(int feledes,void *buff,size_t nbytes);返回:读到的字节数,若已到文件尾为零,若出错为-1. 如read成功,则返回读到的字节数。如已到达文件的尾端,则返回0.2.8write函数用write函数向打开文件写数据。#includeSsize_t write(int filedes , const void *buff,size_t nbytes);返回:若成功为已写的字节数,若出错为-1.其返回值通常与参数nbytes的值不同,否则表示出错。Write出错的一个常见原因是:磁盘已写满,或者超过了对一个给定进程的文件长度限制。对于普通文件,写操作从文件的当前位移量处开始。如果在打开该文件时,指定了O_APPEND选择项,则在每次写操作之前,将文件位移量设置在文件的当前结尾处。在一次成功写之后,该文件位移量增加实际写的字节数。2.9fcntl函数Fcntl函数可以改变已经打开文件的性质。#inlude#inlude#inludeint fcntl(int filedes,int cmd,);返回:若成功则依赖于cmd(见下),若出错为-1。fcntl函数有五种功能:1,复制一个现存的描述符,新文件描述符作为函数值返(cmd=F_DUPFD)。2,获得/设置文件描述符标记,对应于filedes的文件描述符标志作为函数值返回。(cmd=F_GETFD或F_SETFD)。3,获得/设置文件状态标志,对应于filedes的文件状态标志作为函数值返回。(cmd=F_GETFL或F_SETFL)。4,获得/设置异步I/O有权(cmd=F_GETOWN或F_SETOWN)。5,获得/设置记录锁(cmd=F_SETLK,F_SETLKW)。文件状态标志说明O_RDONLY只读打开O_WRONLY只写打开O_RDWR读/写打开O_APPEND写时都添加至文件尾O_NONBLOCK非阻塞方式O_SYNC等待写完成O_ASYNC异步I/O2.9.2用fcntl给文件加锁当多个用户共同使用,操作一个文件的时候,linux通常采用的方法是给文件上锁,来避免共享资源产生竞争的状态。文件锁包括建议锁和强制性锁。建议性锁要求上锁文件的进程都要检测是否有锁存在,并尊重已有的锁。强制性锁由内核和系统执行的锁。Fcntl不仅可以实施建议性锁且可以实施强制性锁。2.9.3fcntl函数格式#inlude#inlude#inludeint fcntl(int filedes,int cmd,struct flock flockptr);Struct flock结构2.9.4flock结构说明1,所希望的锁类型:F_RDLCK(共享读锁),F_WRLCK(独占性写锁),F_UNLCK(解锁一个区域)2,要加锁或解锁的区域的起始地址,有l_start和l_whence两者决定。l_stat是相对位移量(字节),l_whence则决定了相对位移量的起点。3,区域的长度,有l_len表示。关于加锁和解锁区域的说明还要注意下列各点:1,该区域可以在当前文件尾端处开始或越过其尾端处开始,但是不能在文件起始位置之前开始或越过该起始位置。2,如若l_len为0,则表示锁的区域从其起点(由l_start和l_whence决定)开始直至最大可能位置为止。也就是不管添写到该文件中多少数据,它都处于锁的范围。3,为了锁整个文件,通常的方法是l_start说明为0,l_whence说明为SEEK_SET,l_len说明为0。2.10ioctl函数Ioctl函数式I/O操作的杂物箱。不能用本章中其他函数表示的I/O操作通常都能用ioctl表示。终端I/O是ioctl的最大使用方面,主要用于设备的I/O控制。#inlude#inludeint ioctl(int filedes,int request, );返回:若出错则为-1,若成功则为其他值。3,select实现I/O复用3.1 I/O处理的五种模型1,阻塞I/O模型:若所调用的I/O函数没有完成相关的功能就会使进程挂起,直到相关数据到达才会返回。如:终端,网络设备的访问。2,非阻塞模型:当请求的I/O操作不能完成时,则不让进程休眠,而且返回一个错误。如:open,read,write访问。3,I/O多路转接模型:如果请求的I/O操作阻塞,且他不是真正阻塞I/O,而且让其中的一个函数等待,在这期间,I/O还能进行其他操作。如:select函数。4,信号驱动I/O模型:在这种模型下,通过安装一个信号处理程序,系统可以自动捕获特定信号的到来,从而启动I/O。5,异步I/O模型:在这种模型下,当一个描述符已准备好,可以启动I/O时,进程会通知内核。由内核进行后续处理,这种用法现在较少。3.2 select函数传送select的函数告诉内核:(1) 我们所关心的描述符;(2) 对于每个描述符我们所关心的条件(是否读一个给定的描述符?是否想写一个给定的描述符?是否关心一个描述符的异常条件?)。(3) 希望等待多长时间(可以永远等待,等待一个固定量时间,或完全不等待)。 从select返回时,内核告诉我们:(1) 已准备好的描述符的数量。(2) 哪一个描述符已准备好读,写或异常条件。#inlude#inlude#inludeint select(int numfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout );返回:准备就绪的描述符数,若超时则为0,若出错则为-1。Timeout值:1,null:永远等待,知道捕捉到信号或文件描述符已准备好为止;2,具体值:struct timeval类型的指针,若等待为timeout时间还没有文件描述符准备好,就立即返回;3,0:从不等待,测试所有指定的描述符并立即返回;先说明最后一个参数,它指定愿意等待的时间。Struct timevalLong tv_sec;/*seconds*/Long tv_usec;/*and microseconds*/;Select函数根据希望进行的文件操作对文件描述符进行分类处理,这里,对文件描述符的处理主要设计4个宏函数:FD_ZERO(fd_set *set)清除一个文件描述符集;FD_SET(int fd,fd_set *set)将一个文件描述符加入文件描述符集中;FD_CLR(int fd,fd_set *set)将一个文件描述符从文件描述符集中清除;FD_ISSET(int fd,fd_set *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB-T 30961-2014嵌入式软件质量度量》
- 新解读《GB-T 31031-2014机场除雪车》
- 新解读《GB-T 31085-2014国际货运代理单证签发规范》
- 代理牙膏合同范本
- 房租快速出租合同范本
- 农户房屋出售合同范本
- 消防挂资质合同范本
- 整装家居销售合同范本
- 乡村建设桥合同范本
- 殡葬服务合作合同范本
- 广东2025年03月珠海市市直机关事业单位公开招考合同制职员笔试历年参考题库考点剖析附解题思路及答案详解
- 铝合金门窗安装与质量控制
- 2025劳动合同下载深圳
- 《思想道德与法治》(23版):第三章 继承优良传统 弘扬中国精神
- 婚恋关系的维系与发展艺术
- 2025年福州产发园区运营管理有限公司招聘笔试参考题库含答案解析
- 中职数学预备知识
- 餐饮服务与数字化运营 习题及答案 项目四
- 驾培学校安全风险辨识分级管控
- 《中小学科学教育工作指南》解读
- 员工行为守则及职业道德规范
评论
0/150
提交评论