1. 首页
  2. 编程语言
  3. Python
  4. 解决python subprocess参数shell=True踩到的坑

解决python subprocess参数shell=True踩到的坑

上传者: 2022-02-06 20:26:07上传 PDF文件 125.16 KB 热度 19次

0x01 问题现象写的程序使用subprocess创建子进程运行其他程序,判断其他程序运行完后进行处理。在subprocess使用了shell=True,判断用户程序退出的代码如下判断子进程是否运行结束,程序在子进程运行结束后,代码未向下继续运行,而是卡在了这个循环中。0x02 原因分析百度后对shell参数的解释如下:shell=True参数会让subprocess.Popen接受字符串类型的变量作为命令,并调用shell去执行这个字符串,当shell=False是,subprocess.Popen只接受数组变量作为命令,并将数组的第一个元素作为命令,剩下的全部作为该命令的参数。通过查看服务器进程可以看到,仍然有进程存在,进程如下为shell中运行的程序,由此可以得出,shell=true时,子进程在运行完后,shell并没有退出,而是卡在shell命令中,可由进程看到。

用户评论