首页 > 系统相关 >守护进程

守护进程

时间:2024-05-28 16:59:04浏览次数:27  
标签:__ name ligo print 进程 守护

【一】什么是守护进程

  • 守护进程是在计算机系统启动时就已经运行,并且一直在后台运行的一类特殊进程。
  • 特殊在只要系统不关机,就会一直存在
  • 守护进程往往是由系统管理员手动启动的,它们可以在系统启动时自动启动,一直运行在后台,直到系统关闭或被停止
  • 常见的守护进程包括网络服务 (如 web 服务器、邮件服务器、 ftp 服务器等)
  • 守护进程通常在后台运行,不需要用户交互,并且有较高的权限,因此编写守护进程需要特别注意安全性和稳定性

【二】主进程死亡,子进程未死亡

from multiprocessing import Process
import time


def task(name):
    print(f'总管:{name} 正常存活')
    time.sleep(2)
    print(f'总管:{name} 正常死亡')


if __name__ == '__main__':
    print('皇帝:ligo 执掌江山')
    p = Process(target=task, args=('drake',))

    p.start()

    print('皇帝:ligo 寿终正寝')
    # 皇帝:ligo 执掌江山
    # 皇帝:ligo 寿终正寝
    # 总管:drake 正常存活
    # 总管:drake 正常死亡

【三】主进程死亡,子进程必死亡

  • 将设置主进程的方法在调用主进程的前面声明
from multiprocessing import Process
import time


def task(name):
    print(f'总管:{name} 正常存活')
    time.sleep(2)
    print(f'总管:{name} 正常死亡')


if __name__ == '__main__':
    print('皇帝:ligo 执掌江山')
    p = Process(target=task, args=('drake',))

    # 将进程 p 设置成守护进程
    p.daemon = True

    p.start()

    print('皇帝:ligo 寿终正寝')
    # 皇帝:ligo 执掌江山
    # 皇帝:ligo 寿终正寝
  • 错误用法:在开始后给进程加锁
from multiprocessing import Process
import time


def task(name):
    print(f'总管:{name} 正常存活')
    time.sleep(2)
    print(f'总管:{name} 正常死亡')


if __name__ == '__main__':
    print('皇帝:ligo 执掌江山')
    p = Process(target=task, args=('drake',))

    p.start()

    # 将进程 p 设置成守护进程
    p.daemon = True

    print('皇帝:ligo 寿终正寝')

    #     assert self._popen is None, 'process has already started'
    # AssertionError: process has already started
    # 报错原因:进程已经开始了无法再次重置进程状态

    # 总管:drake 正常存活
    # 总管:drake 正常死亡

标签:__,name,ligo,print,进程,守护
From: https://www.cnblogs.com/ligo6/p/18218359

相关文章

  • 进程间同步(互斥锁)
    【一】什么是互斥锁互斥锁是一种用于多线程编程中控制对共享资源访问的机制限制当前时间段只能由当前进程使用,当前进程使用完成后才能其他进程继续使用基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该资源,当访问完成后再解锁,使得其他线程可以进行访问【......
  • 进程间通信(队列和生产消费模型)
    【一】引入【1】什么是进程间通信进程间通信(Inter-ProcessCommunication,IPC)是指两个或多个进程之间进行信息交换的过程【2】如何实现进程间通信借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出这种通信方式是非阻塞的,即发送进程不需要等待接收进......
  • 多进程理论
    【一】什么是进程【1】进程概念正在进行的一个过程或者说一个任务而负责执行任务则是cpu进程其实就是一个正在运行的程序【2】单任务单核+多道,实现多个进程的并发执行同一时刻只能做一个任务(cpu同一时间只能干一个活)【3】多任务同一时刻可以做多个任务【二】......
  • 进程A与B互传信号并做出反应
    进程A与B互传信号并做出反应练习:要求进程A创建一条消息队列之后向进程B发送SIGUSR1信号,进程B收到该信号之后打开消息队列并把进程的PID作为消息写入到消息队列中,要求进程B在写入消息之后,发SIGUSR2信号给进程A,进程A收到该信号则从消息队列中读取消息并输出消息正文的内容......
  • 系统编程练习题----使用消息队列实现两个进程之间的通信
    目录题目思路代码展示进程A进程B结果展示题目要求进程A创建一条消息队列之后向进程B发送SIGUSR1信号,进程B收到该信号之后打开消息队列并写入一段信息作为消息写入到消息队列中,要求进程B在写入消息之后,发SIGUSR2信号给进程A,进程A收到该信号则从消息队列中读取消息并输出消息正文......
  • 【Linux学习】进程间通信 (2) —— 信号
    下面是有关进程通信中信号的相关介绍,希望对你有所帮助!小海编程心语录-CSDN博客目录1.信号 1.1概念 1.2信号的产生 1.3信号的处理方式 2.函数 2.1kill()函数 2.2 signal()函数 2.3 sigaction()函数 2.4 sigprocmask()函数 2.5sigqueue()函数......
  • 《TCP/IP网络编程》(第十章)多进程服务器端(2)
    基于进程的并发服务器我们将扩展之前的回声服务器,使其可以同时向多个客户端体提供服务,实现模型如下图所示即每当有客户端向服务器请求服务时,服务器端都创建一个子进程为其提供服务,比如有5个客户端请求服务,则创建个5子进程。通过fork()复制的文件描述符下图是父进程调用......
  • 进程间通信(管道)、多线程理论、开设多线程的两种方式、threading介绍、线程之间共享数
    【一】进程间通信(管道)借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出。这种通信方式是非阻塞的,即发送进程不需要等待接收进程的响应即可继续执行。multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的进程间通信(IPC)有两种方式:队列......
  • 互斥锁、进程间通信(IPC)、队列(queue)模块、队列实现进程间通信、生产者和消费者模型
    【一】互斥锁【1】什么是进程同步(互斥锁)互斥锁(Mutex)是一种用于多线程编程中控制对共享资源访问的机制。其作用是保证在同一时刻只有一个线程在访问共享资源,从而避免多个线程同时读写数据造成的问题。互斥锁的基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该......
  • 僵尸进程和孤儿进程、守护进程
    【一】僵尸进程和孤儿进程【1】引入我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或......