为什么 shell 输出到 stderr?
Why does the shell output go to stderr?
我正在使用 python 中的 subprocess
模块,每当我调用子进程必须 运行 的任何方法时,在本例中是一些 bash 代码在 shell 上,输出(假设来自命令,例如 iwconfig)被重定向到 stderr。
该命令的输出是否应该重定向到 stdout 而不是 stderr?正如我所说,这种情况发生在 .Popen()
和 .check_output()
等任何方法上。
这个问题可能看起来重复,但我在论坛上找不到任何其他答案来解释为什么会发生这种情况的概念。
stderr
参数设置为 subprocess.STDOUT
因此我可以获取命令的输出。否则没有别的办法。无论如何,stderr 是输出错误的地方,对吧?这对我来说没有意义...
s = subprocess.check_output("iwconfig", shell=True, universal_newlines=True, stderr=subprocess.STDOUT)
提前致谢。
正如@JohnAnderson 所说,发生这种情况是因为,如果我的系统上没有配置无线设备,iwconfig
的输出将被视为错误消息,即使输出看起来是正常的。
我还从 subprocess 中找到了另一个名为 运行() 的新方法,同样的事情发生了,所以这绝对是 Unix/Linux 行为。
s = subprocess.run('iwconfig', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
s.stderr #Produces output
我正在使用 python 中的 subprocess
模块,每当我调用子进程必须 运行 的任何方法时,在本例中是一些 bash 代码在 shell 上,输出(假设来自命令,例如 iwconfig)被重定向到 stderr。
该命令的输出是否应该重定向到 stdout 而不是 stderr?正如我所说,这种情况发生在 .Popen()
和 .check_output()
等任何方法上。
这个问题可能看起来重复,但我在论坛上找不到任何其他答案来解释为什么会发生这种情况的概念。
stderr
参数设置为 subprocess.STDOUT
因此我可以获取命令的输出。否则没有别的办法。无论如何,stderr 是输出错误的地方,对吧?这对我来说没有意义...
s = subprocess.check_output("iwconfig", shell=True, universal_newlines=True, stderr=subprocess.STDOUT)
提前致谢。
正如@JohnAnderson 所说,发生这种情况是因为,如果我的系统上没有配置无线设备,iwconfig
的输出将被视为错误消息,即使输出看起来是正常的。
我还从 subprocess 中找到了另一个名为 运行() 的新方法,同样的事情发生了,所以这绝对是 Unix/Linux 行为。
s = subprocess.run('iwconfig', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
s.stderr #Produces output