Как я могу проверить от Ruby, работает ли процесс с определенным pid?

45
задан ThinkingStiff 30 June 2012 в 05:21
поделиться

4 ответа

Если это будет процесс, то Вы ожидаете "владеть" (например, Вы используете это для проверки изодромного с предварением для процесса, которым Вы управляете), можно просто отправить сигнал 0 в него.

>> Process.kill 0, 370
=> 1
>> Process.kill 0, 2
Errno::ESRCH: No such process
    from (irb):5:in `kill'
    from (irb):5
>> 
47
ответ дан Dustin 26 November 2019 в 20:47
поделиться

@John T, @Dustin: На самом деле, парни, я просмотрел Процесс rdocs, и он похож

Process.getpgid( pid )

, менее сильное средство применения той же техники.

46
ответ дан Pistos 26 November 2019 в 20:47
поделиться

Можно попытаться использовать

Process::kill 0, pid

, где изодромный с предварением изодромное с предварением число, если изодромное с предварением работает, оно должно возвратиться 1.

4
ответ дан John T 26 November 2019 в 20:47
поделиться

Разница между подходами Process.getpgid и Process :: kill , похоже, заключается в том, что происходит, когда pid существует, но принадлежит другому пользователю . Process.getpgid вернет ответ, Process :: kill выдаст исключение (Errno :: EPERM) .

Исходя из этого, я рекомендую Process.getpgid хотя бы по той причине, что он избавляет вас от необходимости перехватывать два разных исключения.

Вот код, который я использую:

begin
  Process.getpgid( pid )
  true
rescue Errno::ESRCH
  false
end
59
ответ дан 26 November 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: