来自Python:
output = os.popen("ps -o cmd=1").read()
print output
输出:
1
/bin/bash
python myPython.pyc
sh -c ps -o cmd=1
ps -o cmd=1
但是当我从终端运行该命令时,它会返回我想要的内容:
/sbin/init
另外,当我跑" ls -l"从python命令,它返回正确的东西。
我的主要目的是从Python中的PID中查找进程名称。 我该怎么办?
答案 0 :(得分:1)
这并没有回答关于你为什么得到不同输出的问题,但更好的解决你所追求的目标的方法是:
/proc/<pid>/cmdline
或/proc/<pid>/exe
编辑:摆脱那里的popen
电话以及随后的“无用cat
”。这样做:
with open("/proc/"+data.get("pid")+"/cmdline") as cmd:
cmdinfo=cmd.read()
command=cmdinfo.split("\0")
print command[0]
答案 1 :(得分:1)
我知道你现在有了一个答案,但你原来的尝试不起作用的原因可能是因为popen创造了一个全新的过程,因此创造了一个不同的过程环境。
当我从终端运行'ps -o cmd = 1'时,我得到的结果与使用popen时的结果相似。
1
bash
ps -o cmd=1