我想在python使用subprocess module
,並試圖獲取的firefox
使用子模塊
cmd = "firefox &"
fire = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE, preexec_fn=os.setsid)
fire_task_procs = find_task(fire.pid)
print "fire_task_procs",fire_task_procs
的process id
我覺得我得到的命令行參數的,我執行pid
從Python的執行命令行命令.. 難道我做錯了什麼? 我確認它是不使用ps aux | grep firefox
如果我不使用'殼= TRUE',我得到以下錯誤: '回溯(最近通話最後一個): 文件 「test.py」,33行,在 火= subprocess.Popen (cmd,stdout = subprocess.PIPE,preexec_fn = os.setsid) 文件「/usr/lib/python2.7/subprocess.py」,第679行,在__init__中 errread,errwrite) 文件「/ usr/lib/python2.7/subprocess.py「,行1259,在_execute_child中 raise child_exception OSError:[Errno 2]沒有這樣的文件或目錄' –
rnish
如果你不使用'shell = True'並且你傳遞字符串'」firefox &「',你會得到一個錯誤,因爲這不是一個合理的arg字符串。 (根據您的平臺,這可能會要求'firefox'打開一個名爲'&'的文件,或者它可能會試圖找到一個名爲'firefox&'的程序,但這兩個都不是正確的。)但是,如果您放棄' ',是的。理想情況下,切換到一個arg列表。 (正如文檔中說的那樣,「當你不使用'shell = True'時,提供一系列參數通常是首選的,特別是在POSIX上。」)所以,將'cmd'改爲'[「firefox」]' 。 – abarnert