Открыть процесс с определенным pid в python

Как я могу открыть процесс в python с конкретным pid. Я имею в виду, что хочу установить PID процесса.

Изменить:

Я хочу определить PID процесса, с которым я работал (например, используя метод Popen класса subprocess)


person SuB    schedule 27.03.2013    source источник
comment
Вы хотите определить PID чего?   -  person Adam    schedule 27.03.2013


Ответы (3)


PID задаются ОС, вы не можете использовать конкретный PID для своего подпроцесса.

Чтобы определить PID подпроцесса, вы можете запросить его у подпроцесса:

import subprocess

dateProc = subprocess.Popen([ 'date' ])
print dateProc.pid

Если вы имели в виду, что хотите узнать PID текущего процесса, используйте os.getpid().

person Alfe    schedule 27.03.2013
comment
Я знаю, как получить PID подпроцесса, но хочу сам установить PID - person SuB; 27.03.2013
comment
Настройка PID невозможна. Вы разветвляете процесс и в результате получаете PID дочернего процесса. Я не знаю ни одной ОС, которая позволила бы вам установить его. Ваш единственный шанс установить его - это создавать подпроцессы, пока вы не получите желаемый PID (они используются в циклическом режиме, чтобы в конечном итоге вы могли получить желаемый PID). Но мне любопытно: почему вы хотите иметь определенный PID? Каков вариант использования этого? - person Alfe; 28.03.2013

Если требуется знать идентификатор процесса процесса (например, firefox), для меня работает следующий код (в Linux env). Перед запуском кода необходимо установить модуль psutil в файл env. А чтобы установить psutil, используйте команду «easy_install psutil».

#!/usr/bin/python

import psutil

process = filter(lambda p: p.name == "firefox", psutil.process_iter())
for i in process:
  print i.name,i.pid
person gsmaker    schedule 27.03.2013

Чтобы получить PID (например) процесса 'pythoh', вам нужно как минимум две строки кода:

import subprocess
pid = int(subprocess.Popen(['pgrep','python'],stdout=subprocess.PIPE).stdout.readline()[:-1])

Добавьте предложение try-except, если есть вероятность, что ни один процесс с таким именем не запущен.

Если есть много процессов 'python', повторяйте строки чтения до тех пор, пока не будет возвращен ''.

Вам также может понадобиться sudo apt-get install pgrep.

НЕ невозможно УСТАНОВИТЬ PID ==> Изменение идентификатора процесса в Linux

person Ricard Bou    schedule 27.03.2013
comment
Ребята, я знаю, как восстановить PID. Я хочу установить PID - person SuB; 27.03.2013
comment
Извините, но то, что вы делаете, должно быть сделано только os.getpid(). - person Alfe; 28.03.2013
comment
Алфе, это был просто общий пример. Вы можете использовать 'getty', например, вместо 'python' и получить несколько PID. Во всяком случае, это не то, о чем просит SuB. - person Ricard Bou; 28.03.2013
comment
SuB, на ваш вопрос уже ответили здесь: stackoverflow .com/questions/6692667/ -- Краткий ответ: это НЕ возможно. - person Ricard Bou; 28.03.2013