Getting process status

If I have the id of a process, how can I get a Process::Status object for it?

Thanks,
Joe

Actually, what I'm trying to do is create an application that will be
able to start, kill, and monitor programs on a bunch of linux
machines.

My initial attempt is using DRb.

I have a Node class that will run on each "node". The Node class will
have methods for starting, killing, and monitoring processes. I have
a NodeProcess object that enscapulates starting, killing, and
returning the status of a process.

I also have a NodeMonitor class that will connect to all the different
Node classes and let the user start/kill different processes on the
Node.

Does my design look ok? I'm having some difficulties correctly
starting a process and getting the status of a currently running or
killed process.

To start a process, I have something like
def start_process
     @process_id = fork do
            $logger.info "Executing '#{@command} #{@arguments}'"
            Kernel.exec "#{@command} #{@arguments}"
        end
        $logger.info "New process id: #{@process_id}"
    end
end
where @command and @arguments are just strings that have been set
already. But I'm getting the process id back of the "sh -c
some_command args" process, not the real process.

And I'm still struggling on how to get the status of my process.

Thanks for your input!

Joe

···

On Tue, 29 Mar 2005 17:51:18 -0800, Joe Van Dyk <joevandyk@gmail.com> wrote:

If I have the id of a process, how can I get a Process::Status object for it?

Thanks,
Joe

Joe Van Dyk wrote:

If I have the id of a process, how can I get a Process::Status object for it?

Calling Process#wait should set $? which is the Status object
for the given pid.

Thanks,
Joe

E

···

--
No-one expects the Solaris POSIX implementation!

That's not quite what I asked for. I have the pid of a specific
process and I need to find out its status (whether or not it's running
or not).

···

On Wed, 30 Mar 2005 13:31:41 +0900, ES <ruby-ml@magical-cat.org> wrote:

Joe Van Dyk wrote:
> If I have the id of a process, how can I get a Process::Status object for it?

Calling Process#wait should set $? which is the Status object
for the given pid.

On Linux at least, you can send signal 0 to determine whether a
process is running or not.

Process#kill(0, 2323)

Over here, I get an Errno::ESRCH exception raised if the process is not running.

Leon

···

On Wed, 30 Mar 2005 14:15:12 +0900, Joe Van Dyk <joevandyk@gmail.com> wrote:

That's not quite what I asked for. I have the pid of a specific
process and I need to find out its status (whether or not it's running
or not).