Subprocess.CREATE_NEW_CONSOLE

懵懂的女人 提交于 2020-01-05 09:13:28

问题


I have this Python code.

import subprocess

subprocess.Popen("airmon-ng check kill", creationflags = subprocess.CREATE_NEW_CONSOLE)

Python 2.7.6 on Linux Mint gives me the following error:

    subprocess.Popen("airmon-ng check kill", creationflags = subprocess.CREATE_NEW_CONSOLE)
    AttributeError: 'module' object has no attribute 'CREATE_NEW_CONSOLE'

The same on Windows 8.1 gives me this:

Traceback (most recent call last):
File "C:\Users\Ben\Dropbox\Coding\jam.py", line 10, in <module>
subprocess.Popen("airmon-ng check kill", creationflags = subprocess.CREATE_NEW_CONSOLE)
File "C:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

回答1:


subprocess.Popen("airmon-ng check kill", shell=True)

Will do what you want, which I presume is to open a shell and execute airmon-ng check kill through Python. I've looked through the subprocess docs and the only thing pointing to CREATE_NEW_CONSOLE states that creationflags is only available in Windows which would explain why it doesn't work in Linux Mint. The docs for CREATE_NEW_CONSOLE also states that

The new process has a new console, instead of inheriting its parent’s console (the default). This flag is always set when Popen is created with shell=True.

So just using shell=True is the best way to do what you want.



来源:https://stackoverflow.com/questions/29633719/subprocess-create-new-console

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!