[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Getting process status

Joe Van Dyk

3/30/2005 1:52:00 AM

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

Thanks,
Joe


4 Answers

Joe Van Dyk

3/30/2005 2:15:00 AM

0

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
>

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


ES

3/30/2005 4:32:00 AM

0

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!



Joe Van Dyk

3/30/2005 5:15:00 AM

0

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.
>

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).


leon breedt

3/30/2005 6:13:00 AM

0

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).
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