How can I check from Ruby whether a process with a certain pid is running?

前端 未结 9 1894
眼角桃花
眼角桃花 2021-01-30 16:18

If there is more than one way, please list them. I only know of one, but I\'m wondering if there is a cleaner, in-Ruby way.

9条回答
  •  走了就别回头了
    2021-01-30 17:12

    The difference between the Process.getpgid and Process::kill approaches seems to be what happens when the pid exists but is owned by another user. Process.getpgid will return an answer, Process::kill will throw an exception (Errno::EPERM).

    Based on that, I recommend Process.getpgid, if just for the reason that it saves you from having to catch two different exceptions.

    Here's the code I use:

    begin
      Process.getpgid( pid )
      true
    rescue Errno::ESRCH
      false
    end
    

提交回复
热议问题