Есть ли способ получить статус дочернего процесса процесса на основе его PID в Ruby?Получить статус процесса pid в Ruby
Например, в Python можно сделать psutil.Process (ИДП) .status
Есть ли способ получить статус дочернего процесса процесса на основе его PID в Ruby?Получить статус процесса pid в Ruby
Например, в Python можно сделать psutil.Process (ИДП) .status
Я не знаю портативного метод рубина, чтобы получить процесс состояния запущенного процесса. Вы можете сделать Process.wait
и проверить $?.exitstatus
, но это не похоже на то, что вы хотите. Для решения Posix, вы могли бы использовать
`ps -o=state= -p #{pid}`.chomp
получить буквенный код пс производит для состояния процесса
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
На OS X, я установка строки:
outputstring="ps -O=S -p #{mypid}"
затем выполнить в%%:
termoutput=%x[#{outputstring}]
Я могу показать, что при необходимости, или просто сохранить вывод в чистоте и действовать в состоянии, которое я нашел при вызове.
Я искал то же самое. Позор ProcessStatus, похоже, не может быть инициализирован из live pid. Это жизненно важный материал, если вы хотите сделать что-нибудь вроде безопасного приуроченного к дочернему процессу.
В любом случае, это вторая линия в /proc/$pid/status
если вы на Linux .: status_line = File.open("/proc/#{pid}/status") {|f| f.gets; f.gets }
Скорее всего гораздо быстрее, чем что-либо с участием внешних программ.
Простое и элегантное решение, чтобы не полагаться на внешние программы (и обстреливать), спасибо. – Navarro
Я считаю, что модуль процесса имеет то, что вам нужно в нем: http://www.ruby-doc.org/core-1.9.3/Process.html – vlasits
Какая операционная система вам нужна для этого? – Phrogz
@vlasits Процессный модуль не имеет никакого способа получить состояние запущенного процесса, только выходящие процессы. – dbenhur