zoukankan      html  css  js  c++  java
  • subprocess模块

    什么是subprocess

      subprocess 称之为子进程,进程是一个正在运行的程序

      为什么要使用子进程,因为之前的os.system()函数无法获取命令的执行结果,另一个问题是当我们启动了某一其他进程时无法与这个子进程进行通讯,

      当要在python程序中执行系统指令时 就应该使用subprocess 自动化运维经常会使用

    #测试
    res = os.system("python")
    print(res)
    # res结果为执行状态

    subprocess的使用

    import subprocess
    
    p = subprocess.Popen("ls",shell=True)
    #shell=True 告诉系统这是一个系统指令 而不是某个文件名
    #此时效果与sys.system()没有任何区别,都是将结果输出到控制台
    
    # 那如何与这个进程交互数据呢,这需要用到三个参数
    1.stdin  表示输入交给子进程的数据
    2.stdout 表示子进程返回的数据
    3.stderr 表示子进程发送的错误信息
    
    #这三个参数,的类型都是管道,(管道本质就是一个文件,可以进行读写操作),使用subprocess.PIPE来获取一个管道

      理解了三个参数的意义后让我们来实现一个小功能

      一个子进程执行tasklist命令获取所有的任务信息,然后将结果交给另一个进程进行查找

      另一个子进程执行findstr 查找某个任务信息

    p1 = subprocess.Popen("tasklist",shell=True,stdout=subprocess.PIPE)
    p2 = subprocess.Popen("findstr smss",shell=True,stdin=p1.stdout,stdout=subprocess.PIPE)
    print(p2.stdout.read())

      总结: subprocess 主要用于执行系统命令,对比sys.system 区别在于可以在进程间交换数据

     

     

  • 相关阅读:
    nginx源码分析:module机制
    Linux源码分析之:malloc、free
    shell格式化字符串
    shell执行字符串中的命令
    docker安装并运行mongo
    docker安装并运行kibana
    docker安装并运行elasticsearch
    docker安装并运行rabbitmq
    docker安装并运行ngnix
    docker安装并运行redis
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/10742370.html
Copyright © 2011-2022 走看看