linux浏览器守护进程,服务器编程入门(12) 守护进程

摘要:

在之前的《服务器编程入门(5)Linux服务器程序规范》中,我们提到过将服务器程序后台化,这就是本节将要讨论的守护进程.

本节主要关注一下问题:

1 什么是守护进程?

2 守护进程的启动方法有哪些?

3 如何创建一个守护进程?

1 什么是守护进程?

在后台运行,且不与任何控制终端关联的进程。

守护进程不与作业控制、终端会话管理、终端产生信号等发生交互,也可以避免在后台运行的守护进程非预期地输出到终端。

两个特点: 守护进程执行中的信息不显示在任何一个终端上

守护进程不被终端产生的无用信号所中断

在理解更多关于守护进程的概念之前,我们先了解一下进程、进程组、会话期和控制终端的关系。 每一个进程有一个进程ID,每个进程都属于一个进程组

每个进程组有一个组长进程组长进程的ID等于进程组ID

会话期是一个或多个进程组的集合,一个会话期可以有一个单独的控制终端(其中,只有一个前台进程组可以控制终端的交互)

从shell中启动的每个进程将继承一个终端,以便进程与用户交互,同时继承父进程的会话期和进程组ID,因此子进程会受发给该会话期或进程组的信号的影响。

守护进程与普通进程的区别如下图所示:

748721.html daemon(nochdir, noclose);

作用:通过在服务器程序中调用它,可以把一个普通进程转变为守护进程。

参数说明:

If nochdir is zero, daemon()  changes  the  process’s  current  working directory to the root directory ("/"); otherwise,

If  noclose is zero, daemon() redirects standard input, standard output and standard error to /dev/null; otherwise,  no  changes  are  made  to these file descriptors.

Demo:

#include <.h>

main(argc, *(daemon(, ) == -(fd = open(, O_WRONLY|O_CREAT|O_APPEND, (fd == -= time(*buf = asctime(localtime(&);

运行截图:

748721.html, O_WRONLY|O_CREAT|O_APPEND,

748721.html<.h>

MAXFD 64

myDaemon(,main(argc, *(myDaemon(, ) == -(= open(, O_WRONLY|O_CREAT|O_APPEND, (fd == -= time(*buf = asctime(localtime(&myDaemon(nochdir, ( (pid = fork()) < -(pid) { (setsid() < ) -( (pid = fork()) < -); = ; (nochdir == ); (noclose == (i = ; i < MAXFD; i++运行截图:

16958de06bd0c421d627909c989d748c.png

参考资料:

《UNIX网络编程 卷1:套接字联网API(第3版)》

linux系统编程之进程(八):守护进程详解及创建,daemon()使用

Linux内核中的进程组及会话

http://www.dengb.com/Linuxjc/748721.htmlwww.dengb.comtruehttp://www.dengb.com/Linuxjc/748721.htmlTechArticle摘要: 在之前的《服务器编程入门(5)Linux服务器程序规范》中,我们提到过将服务器程序后台化,这就是本节将要讨论的守护进程. 本节...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值