安装pstree:yum install psmisc -y 作用:用于追踪子进程的父进程 使用场景:需要知道某个子进程的父进程时; 常用选项: -a:显示命令行选项(即显示启动进程所使用的命令) -p:打印出父进程的pid号 -s:显示子进程所有的父进程(默认只显示子进程的第一个父进程) 注:ap ...
分类:
系统相关 时间:
2020-02-01 12:15:25
阅读次数:
92
系统调用决定了操作系统是否好用,功能是否齐全。 进程管理 创建进程:fork 原进程叫父进程,新进程叫子进程。 当父进程fork创建子进程时,采用写时拷贝的方案。先是父子共用同一内存,如果有一方要写数据,就会将该内存块进行拷贝。然后再写。 fork可以根据返回值进行对父子进程的区分。 返回0,说明是 ...
分类:
系统相关 时间:
2020-01-26 23:48:12
阅读次数:
107
import os print('Process (%s) start...' % os.getpid()) # Only works on Unix/Linux/Mac: pid = os.fork()#os.fork()创建2个进程,返回值为0时,表示子进程,返回值为子进程号是 父进程os.ge ...
分类:
编程语言 时间:
2020-01-15 09:16:14
阅读次数:
65
多进程和多线程原理 fork后子进程会复制父进程的task_struct结构,并为子进程的堆栈分配物理页。理论上来说,子进程应该完整的复制父进程的堆栈以及数据空间,但是2者共享正文段。 由于一般fork后面都结着exec,所以现在的fork都在用写时复制的技术,顾明思议,就是数据段,堆栈一开始并不复 ...
分类:
编程语言 时间:
2020-01-12 13:29:36
阅读次数:
84
基础概念 进程创建过程 当一个进程创建一个新的进程,创建进程的进程(父进程)使用名为fork()的系统调用。当fork()被调用的时候,它会为新创建的进程(子进程)获得一个进程描述符,并且设置新的进程ID。复制父进程的进程描述符给子进程。这时候,不会复制父进程的地址空间,而是父子进程使用同样的地址空 ...
分类:
系统相关 时间:
2020-01-04 22:45:58
阅读次数:
117
1.一些缩写 PID = 进程ID (由内核根据延迟重用算法生成)PPID = 父进程ID(只能由内核修改)PGID = 进程组ID(子进程、父进程都能修改)SID = 会话ID(进程自身可以修改,但有限制,详见下文)TPGID= 控制终端进程组ID(由控制终端修改,用于指示当前前台进程组) 2.关 ...
分类:
系统相关 时间:
2019-12-28 09:50:58
阅读次数:
109
课程回顾: 线程池 队列:同一进程内的队列 先进先出 后进先出 优先级队列 线程池中的回调函数是谁在调用? 线程池中的回调函数是子线程调用的,和父线程没有关系 进程池中的会点函数是父进程调用的,和子进程没有关系 今日内容: 为什么要有协程? 因为想要在单线程内实现并发的效果 因为CPthon有GIL ...
分类:
其他好文 时间:
2019-12-21 13:48:17
阅读次数:
67
僵尸进程: 每个进程结束以后会释放所占用的资源,但是还是会保留少许的状态资源以供其父进程查看子进程曾经运行时候状态。 一旦父进程通过wait()或者waitpid()检查了子进程曾经运行的状态,内核就会释放子进程占用的资源。 如果子进程已经结束运行,但是父进程还在运行。则这个时候子进程就会变为僵尸进 ...
分类:
系统相关 时间:
2019-12-19 14:39:41
阅读次数:
109
僵尸进程 一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。这是每个 子进程在结束时都要经过的阶段。如果子进程在e ...
分类:
系统相关 时间:
2019-12-18 14:58:23
阅读次数:
88
exit()函数导致子进程的正常退出,并且参数status&这个值将被返回给父进程。exit()应该是库函数。exit()函数其实是对_exit()函数的一种封装(库函数就是对系统调用的一种封装)。 _exit()函数终止调用的进程,进程所有的文件描述符(在linux中一切皆文件)都被关闭, 这个进 ...
分类:
其他好文 时间:
2019-12-11 21:18:45
阅读次数:
78