多进程编程
import os
pid = os.fork()
功能:创建新的进程
参数:无
返回值:失败返回一个负数
成功:在原有进程中返回新的进程的PID号
在新的进程中返回0
子进程会复制父进程全部代码段,包括fork之前产生的内存空间
子进程从fork的下一句开始执行,与父进程互不干扰
父子进程的执行顺序是不一定的,父子进程共用一个终端显示
父子进程通常会根据fork返回值的差异选择执行不同的代码。所以if结构几乎是fork的固定搭配
父子进程空间独立,操作的都是本空间的内容,互不影响
子进程也有自己的特性,比如PID号,PCB,命令集等
进程相关函数
os.getpid():获取当前进程的进程号,返回进程号
os.getppid():获取当前进程父进程的PID号,返回进程号
os._exit(进程的退出状态码):进程退出,状态码可以自己定
sys.exit([进程的退出状态码,默认是0]):进程退出,数字表示退出状态,字符串表示退出时打印的内容,可以通过异常捕获来阻止这个函数的退出
孤儿进程:
父进程先于子进程退出,此时子进程就称为孤儿进程。
孤儿进程会被操作系统指定的进程收养,系统进程就成为孤儿进程的新的父进程
僵尸进程:
子进程先于父进程退出,但是父进程没有处理子进程的退出状态,此时子进程就会成为僵尸进程。
僵尸进程会存留少量PCB信息在内存中,大量的僵尸进程会消耗系统资源,应该避免僵尸进程的产生
发表评论