需要首先了解shell=True和shell=False的区别和联系。
https://blog.csdn.net/xiaoyaozizai017/article/details/72794469
shell=True参数会让subprocess.call接受字符串类型的变量作为命令,并调用shell去执行这个字符串,当shell=False是,subprocess.call只接受数组变量作为命令,并将数组的第一个元素作为命令,剩下的全部作为该命令的参数。
但是都没解决我的问题啊,难过呀!
有大佬晓得的话,麻烦留个言,帮解决一下!
找到几个比较好的方法:
虽然都没有很好解决我的问题,希望对其他人有用吧。
(1)使用os.killpg(os.getpgid(p.pid), 9)
https://www.jianshu.com/p/39462b158af8
(2)将shell=True删除,改为列表形式使用
https://www.jianshu.com/p/a58491d1abf8
(3)subprocess.terminate()使用杀死子进程的方法处理