完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先我们需要了解一下什么叫做守护进程,以及我们为什么需要这样的进程。我们知道当我们写一个简单的程序的时候我们知道,这个程序比如说printf一些信息出来我们最终会在终端上面看到,但是当我们整个main函数执行完了,这个程序也就完成了。同样的当我们关闭一个终端的时候,伴随在终端运行的程序也就结束了。但是我们有时候会有这样的需求,比如说我们希望能有一个程序一直接收我们所发送的信息,并进行处理,但是如果想我们和终端进行绑定的话是肯定不行的,也就是我们需要一个进程,能够在后台一直运行,这个时候我们就引入了守护进程这个概念。 那么相应的守护进程就能够实现一直在后台运行,不会出现我们关闭终端它就结束的情况。这种进程我们在服务器当中用的很多,我们需要对客户端提供服务,那么服务器的服务程序需要一直运行,能够在后台实时响应用户的请求,并给出回复。 插播一个知识点: ps查看进程。 如果我们在中断输入ps的话我们查看到的是当前终端当中运行的进程。下面我们按下两个常用的ps参数命令。 ps -ajx 偏向于显示各种有关的ID号,包括ppid、pid、pgid、sid,分别是父进程ID,进程ID,进程组ID,会话ID。 ps -aux偏向于显示进程占用的资源,比如说我们的系统CPU使用率、内存使用率等等。 kill命令可以用来向进程发送指令。这里我们可以百度得到各种参数的用法我们在这里不一一进行列出了。 使用方式:kill -信号编号 进程ID 比如我们常用的关闭进程的命令:kill -9 进程ID 守护进程的英文为daemon,简写为d,当我们去查看系统该进程的时候后面如果是以d结尾的一般都是守护进程,这里说的是一般,并不包括所有以d结尾的进程都是守护进程,这里要根据实际情况进行判断。 守护进程是一个长期运行的进程,和我们的控制台是脱离的,不依附于控制台运行的,普通程序是需要依附在控制台运行,如果控制台(终端)关闭的话,那么伴随终端的所有进程就会都被关闭了。 常见的守护进程: syslogd:这个进程是系统日志的守护进程,提供syslog cron:这个进程用来实现操作系统时间管理,可以看到这个进程虽然结尾不是d但是它也是一个守护进程 我们看下创建一个守护进程的方式: 1.创建一个子进程,而后结束父进程 2.用setpid为进程设置一个新的会话期session,目的是让进程脱离控制台 3.用chdir将工作目录设置为’/’,切换到根目录 4.用umask设置为0,保证进程对文件操作有一个最大权限 5.关闭所有的文件描述符,可以通过sysconf获取开启了多少个文件 6.将文件描述符0,1,2重定位到/dev/null 下面我们来实际代码测试一下:
评分 |
|
相关推荐
2 个讨论
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4874 浏览 0 评论
87366 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4687 浏览 2 评论
3581 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2459 浏览 0 评论
1962浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1329浏览 1评论
1239浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1306浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1215浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 11:44 , Processed in 1.076199 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号