首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

守护进程

5.1 概念 (1)什么是守护进程 Daemon(守护进程)是运行在后台的一种特殊进程。**它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。...Linux系统的大多数服务器就是通过守护进程实现的。 (2)为什么需要守护进程 守护进程是脱离于终端并且在后台运行的进程。...守护进程脱离于终端是为了避免进程执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。...(3)守护进程实例 常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。...5.2 模型 (1)守护进程编程步骤 a.创建子进程,父进程退出,一切工作在子进程执行,形式上脱离了控制终端 b.在子进程中创建新的会话(会话后面章节会提到),使子进程完全独立出来,脱离控制 c.

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    守护进程

    首先,什么是守护进程守护进程是一个在后台长期运行并且不受任何终端控制的进程。 其次,为什么需要守护进程?...我们知道linux有许多自带的守护进程,比如syslogd、crond、sendmail等。那用户或开发者自己编写的程序为什么也需要成为守护进程呢? 这主要是因为守护进程的特性。...守护进程不受任何终端控制是为了避免进程在的执行的过程中在终端上输出信息,同时避免进程被终端所产生的信息打断(比如在终端输入ctrl+c或直接退出ssh连接导致的进程退出)。...这一步的作用有两个: 1.非系统守护进程可能是由用户手动执行的,比如在终端shell上执行./nginx。父进程的终止会让shell认为这条命令已经执行完毕。...两次fork 守护进程两次调用fork就是出于僵尸进程的考虑:父进程生成守护进程后,还有其它事情要做,其『人生意义』不止是创建守护进程

    2.7K40

    守护线程与守护进程

    守护进程进程创建守护进程   其一:守护进程会在主进程代码执行结束后就终止   其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes...,禁止p创建子进程,并且父进程代码执行结束,p即终止运行 p.start() print('主') import time def foo(): print(123) time.sleep...无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 #1.对主进程来说,运行完毕指的是主进程代码运行完毕 #2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕...,主线程才算运行完毕 详细解释: #1 主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束,...因为主线程的结束意味着进程的结束,进程整体的资源都将被回收,而进程必须保证非守护线程都运行完毕后才能结束。

    1.9K90

    13(守护进程)

    13.2 守护进程的特征 守护进程是一种纯粹的后台进程,与运行前环境完全隔离,包括未关闭的文件描述符、控制终端、会话、进程组、工作目录以及文件创建掩码等 很多守护进程是父进程 fork 产生...,所以会继承所有的父进程地址空间中的环境,所以必须在守护进程诞生之初,断绝这些相关环境,当然,守护进程也可以在 linux 系统启动时从启动脚本 /etc/rc.d 中启动,也可以由 crontab 启动...事实上,守护进程与普通进程的编写并没有特别大的区别 13.3 编程规则 (1)进程从创建他的父进程那里继承了文件创建掩码,它可能会修改守护进程创建的文件的存取位。...这样做实现了以下两点:第一,如果该守护进程是通过shell命令启动的,那么父进程终止使得shell认为该命令已执行完毕。...SIGHUP, &sa, NULL) < 0) { perror("sigaction"); exit(-1); } // 再次 fork 让守护进程不再担当会话组长

    78910

    Python 守护进程

    守护进程:通常被定义为一个后台进程,而且它不属于任何一个终端会话(terminal session)。许多系统服务由守护程序实施;如网络服务,打印等。 ...下面是转自一位网友写的编写守护进程的步骤: 1. 调用fork()以便父进程可以退出,这样就将控制权归还给运行你程序的     命令行或shell程序。...由于一个控制终端     与一个会话相关联,而且这个新会话还没有获得一个控制终端,我们的进程没     有控制终端,这对于守护程序来说是一件好事。 3....sys.stderr.fileno()) 仔细比对前面说的步骤和代码,大体上是没有什么问题了,但是疑问就来了,os.fork()到底是怎么工作的呢,GOOGLE了个遍,最后的结论是这样:   父进程执行代码到...os.fork()处时,会将自己整个拷贝一份(即子进程)这时候父进程os.fork()的返回值大于零(即子进程的PID),子进程os.fork()的返回值等于零,父进程结束,子进程继续执行,这时候又遇到第二个

    92030

    守护进程详解

    在一个多任务的电脑操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的电脑程序。此类程序会被以进程的形式初始化。...守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。 通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。...守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程运行fork,然后使其父进程立即终止,使得这个子进程能在init下运行。这种方法通常被称为“脱壳”。 系统通常在启动时一同引导守护进程。...守护进程为对网络请求,硬件活动等进行响应,或其他通过某些任务对其他应用程序的请求进行回应提供支持。...而作为Unix-like的Mac OS X有守护进程。(在Mac OS X中也有“服务”,但他们与Windows中类似的程序在概念上完全不相同。)

    86921

    Linux守护进程

    二、守护进程 1. 什么是守护进程 守护进程,也叫做精灵进程Daemon,是Linux中的后台服务进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件,一般使用d结尾的名字。...如何创建守护进程模型 ① 创建子进程,父进程退出 所有工作在子进程中进行,形式上脱离了控制终端。...⑥ 开始执行守护进程的核心工作 ⑦ 守护进程退出处理程序模型(非必要) 3....守护进程编程实战 案例:创建一个守护进程,每经过30秒在$HOME/log/目录下创建一个文件,并命名为 file.time /*************************************...一般我们后台执行程序时是这样用的 nohup ./a.out > file.log & 这样运行的程序就是一个守护进程,也可以达到上面那样创建守护进程的效果。

    10310

    linux守护进程

    1、什么是守护进程 守护进程是运行在后台的一种特殊进程,它独立于控制终端并且周期性地执行某种任务或循环等待处理某些事件的发生; 守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机才随之一起停止运行...; 守护进程一般都以root用户权限运行,因为要使用某些特殊的端口或者资源; 守护进程的父进程一般都是init进程,因为它真正的父进程在fork出守护进程后就直接退出了,所以守护进程都是孤儿进程,由init...接管; 2、有哪些常见的守护进程 日志服务进程 syslogd 数据库守护进程 mysqld 3、创建守护进程的步骤 1)fork()创建子进程,父进程exit()退出 这是创建守护进程的第一步。...之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行其他命令,从而在形式上做到了与控制终端的脱离,在后台工作。...5)在孙进程中调用 umask() 函数,设置进程的文件权限掩码为0 文件权限掩码是指屏蔽掉文件权限中的对应位。比如,有个文件权限掩码是050,它就屏蔽了文件组拥有者的可读与可执行权限。

    3.1K20

    守护进程(daemon)

    守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。...守护进程是一个在后台运行并且不受任何终端控制的进程。这也是守护进程最重要的特点。在Linux下创建守护进程的步骤如下。...、 下面是在Linux系统下创建守护进程的一个简单示例。...,我们可以通过ps aux命令在终端看到daemon进程成为了一个守护进程。...结果如下: 当我们不需要的守护进程的在后台继续执行的时候,可以通过kill -9 pid来杀死它。我们可以查看daemon.log文件的内容如下:

    1.4K20

    android守护进程

    而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉。...要么像第四种单独的进程运行service在360老的版本是可以的,但是在360的比较新的版本中仍然会被杀死....另外再加上两个类似一守护进程的Service, 分别检查Service的运行状态,注册响应的广播,对其进行守护,一旦发现没有运行就将其启动....至于检测方式,可以轮询获取子进程Pid,若为1, 则说明子进程被Init进程所领养,已经成为了孤儿进程.   ...但是这种方式比较消耗电量,并且由于不同手机系统定制的改变,当应用被强制停止时,父进程并不一定被真正杀死,因此在一些特定机型上是无法通过此方式进行判断.

    2.1K80

    守护进程与僵尸进程

    这也是守护进程的由来了,因为守护进程的其中一个要求就是希望init成为守护进程的父进程。...进程在退出时执行sys_exit(C程序里在main函数返回会执行到),而它会调用do_exit,do_exit首先清理进程使用的资源,然后调用exit_notify方法,将进程置为僵尸ZOMBIE状态...这里有一个假定,父进程生成守护进程后,还有自己的事要做,它的人生意义并不只是为了生成守护进程。...这样,如果父进程fork一次创建了一个守护进程,然后继续做其它事时阻塞了,这时守护进程一直在运行,父进程却没有正常退出。如果守护进程因为正常或非正常原因退出了,就会变成ZOMBIE进程。...父进程先fork出一个儿子进程,儿子进程再fork出孙子进程做为守护进程,然后儿子进程立刻退出,守护进程被init进程接管,这样无论父进程做什么事,无论怎么被阻塞,都与守护进程无关了。

    1.6K10

    python守护进程

    守护进程英文为daemon,像httpd,mysqld,最后一个字母d其实就是表示daemon的意思。 守护进程的编写步骤: fork子进程,然后父进程退出,此时子进程会被init进程接管。...重定向孙子进程的标准输入流,标准输出流,标准错误到/dev/null 完成上面的4个步骤,那么最终的孙子进程就称为守护进程,先看下代码,后面分析下步骤的原因。 #!...,父进程退出 通常,我们执行服务端程序的时候都会通过终端连接到服务器,成功连接后会加载shell环境,终端盒shell都是进程,shell进程是终端进程的子进程,通过ps命令可以很容易的查看到,在这个...shell环境下一开始执行的程序都是shell进程的子进程,自然会受到shell进程的影响,在程序里fork子进程后,父进程退出,对于shell进程来说,这个父进程就算执行完毕,而产生的子进程会被init...2.修改子进程的工作目录 子进程在创建的时候会继承父进程的工作目录,如果执行的程序是在U盘里面,就会导致U盘不能卸载。

    1K20
    领券