Я пытаюсь использовать subprocess module
в питоне и пытаюсь принести process id
из firefox
Выполнения команд командной строки из Python с помощью модуля подпроцесса
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
Я думаю, что я набираюсь pid
из командной строки аргумента, что я уверен, выполнение .. Я делаю что-то неправильно? Я подтвердил, что это не то же самое, используя ps aux | grep firefox
Если я не использую 'оболочки = true', я получаю следующее сообщение об ошибке: ' Traceback (самый последний вызов последний): Файл "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