当我在Python中以root身份键入
os.system("whoami")
时,它返回root
,但是当我尝试将其赋值给变量x = os.system("whoami")
时,它会将x的值设置为0。为什么? (:os.system()
返回(编码的)进程退出值。0
表示成功:
在 Unix 上,返回值是进程退出状态,其格式符合
wait()
指定的格式。注意,POSIX 并未指定 C 函数 system() 的返回值意义,因此 Python 函数的返回值取决于系统。
你看到的输出被写入到 stdout
,即你的控制台或终端,并不会返回给 Python 调用者。
如果你想捕获 stdout
,请使用 subprocess.check_output()
代替:
x = subprocess.check_output(['whoami'])
os.system('command')
返回一个16位数字,其中从左边(lsb)开始的前8位表示操作系统用于关闭命令的信号,接下来的8位表示命令的返回代码。
有关详细信息,请参阅我的答案:Python中os.system()的返回值是什么?
[Errno 9] Bad file descriptor
的错误信息...出了什么问题?-.-. - Fabio Magarelli