美文网首页
进程之os模块

进程之os模块

作者: 遇明不散 | 来源:发表于2019-04-19 10:02 被阅读0次

os模块

  • os 模块提供大量和系统相关的功能函数接口
  • os 模块的使用时系统相关的,在不同的系统中,可能使用方法不同
os.fork()
  • 平台:只能在linux和unix下使用
  • 功能:创建一个新的进程
  • 参数:无
  • 返回值:
    • < 0 表示进程创建失败
    • == 0 在子进程中fork的返回值为0
    • > 0 在父进程中fork的返回值大于0,返回新的进程的PID号
import os

# 创建新进程
pid = os.fork()

if pid < 0:
    print('Create process failed.')
elif pid == 0:
    print('This is the new process.')
else:
    print('This is the parent process.')

print('The porcess end.')
注意点
  • 子进程会复制父进程全部代码段,包括fork之前产生的内存空间
  • 子进程从fork的下一句开始执行,与父进程互不干扰,理论上不一定谁先执行
  • 父子进程的执行顺序是不一定的,父子进程公用一个终端显示
  • 父子进程通常会根据fork返回值得差异选择执行不同的代码。所以if结构几乎是fork的固定搭配
  • 父子进程空间独立,操作的都是本空间的内容,互不影响
  • 子进程也有自己的特性,比如PID号,PCB,命令集等
  • 子进程的退出不会影响父进程。
  • 子进程不会执行fork语句,会从fork的下一句开始执行,当父进程执行到fork语句时,系统会记录当前的位置,即文件偏移量,子进程从当前的位置开始执行,而fork的下一句并非if语句,而是把fork的返回值赋值给pid的赋值语句。
import os

# 创建新进程
pid = os.fork()
a = 10

if pid < 0:
    print('Create process failed.')
elif pid == 0:
    print('pid =',pid)  # 0
    print('This is the new process.')
    print(a)   # 10
    a = 1000  # 子进程中修改a的值,不会影响父进程a的值
else:
    # 父进程中的PID为子进程的PID号。
    print('Parent pid =',pid)   
    print('This is the parent process.')

print('The porcess end.')
print(a)  # 父进程 a = 10,子进程 a = 1000

进程相关函数

  • os.getpid() 获取当前进程的PID号
  • os.getppid() 获取当前进程父进程的PID号
  • os._exit(status) 结束一个进程
    一个数字表示进程的退出状态,通常0表示正常退出进程,其他数字表示非正常退出
  • sys.exit([status]) 结束一个进程,如果处理了抛出的异常则不结束进程
    • 一个数字表示进程的退出状态,默认为0,还可以是一个字符串,则在进程退出时会打印这个字符串
    • 可以通过捕获 SystemExit 异常阻止退出

相关文章

  • 进程之os模块

    os模块 os 模块提供大量和系统相关的功能函数接口 os 模块的使用时系统相关的,在不同的系统中,可能使用方法不...

  • 异常

    今天学习了os模块中的一些操作,常用模块有: os模块 os.path模块 shutil模块 ...

  • python内置os.path模块

    python内置os.path模块 os.path os.path 模块 是 os模块下的一个子模块,同样用于目录...

  • python语法入门四

    文件 os + time模块 pickle模块 异常 文件 os + time模块 pickle模块 异常

  • Python基础-day10

    list ​ os模块 ​ os.path模块 ​ 文件操作 os模块 sys解析命令行参数(去...

  • Python 基础篇章5-os模块

    os模块 os模块简介 os模块是我们接触python可能最常用的一个内置模块。os作者是认为是operation...

  • 16-os模块

    OS模块 OS 操作系统的简称os模块就是对操作系统进行操作 使用该模块必须先导入模块: os模块中的函数 ge...

  • python常用模块

    OS 模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os getcwd() 获取...

  • python的os模块

    OS模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os getcwd() 获取当...

  • python基础学习(三)

    常用模块 String模块 数学模块 随机模块 OS模块 os.path模块 re模块 常用函数及操作 列表操作 ...

网友评论

      本文标题:进程之os模块

      本文链接:https://www.haomeiwen.com/subject/ornfgqtx.html