я следующая функция:Сохранить вывод Баш команды в переменную внутри if..else заявление
def check_process_running(pid_name):
if subprocess.call(["pgrep", pid_name]):
print pid_name + " is not running"
else:
print pid_name + " is running and has PID="
check_process_running(sys.argv[1])
если я бегу сценарий он дает мне:
$ ./test.py firefox
22977
firefox is running and has PID=
Мне нужно, чтобы получить pid_num к работайте с этим процессом. Я узнал, что если я хочу, чтобы создать переменный с выше PID ценностных 22977 можно использовать:
tempvar = subprocess.Popen(['pgrep', sys.argv[1]], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
pid_num = tempvar.stdout.read()
print pid_num
22977
Есть ли решение, где строительство tempvar не требуется, где Идентификатор подобран и сохранен в переменную pid_num в выражении if..else, как оно есть в моей функции? Или что является самым прямым способом создать переменную pid_num с одним вызовом в оболочку с использованием подпроцесса и сохранить функцию такой простой, как сейчас?
EDIT:
С сильфона решение, которое я смог восстановить заявление, сохранить его простым и иметь pid_num работать с процессом дальнейшей:
def check_process_running(pid_name):
pid_num = subprocess.Popen(['pgrep', sys.argv[1]], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]
if pid_num:
print pid_name + " is running and has PID=" + pid_num
else:
print pid_name + " is not running"