Class: BitGirder::Io::ProcessCheck

Inherits:
BitGirderClass
  • Object
show all
Defined in:
lib/bitgirder/io.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pid, ps_str) ⇒ ProcessCheck

Returns a new instance of ProcessCheck.



1021
1022
1023
1024
# File 'lib/bitgirder/io.rb', line 1021

def initialize( pid, ps_str )
    
    @pid, @ps_str = pid, ps_str
end

Class Method Details

.for_pid(pid) ⇒ Object



1043
1044
1045
1046
1047
# File 'lib/bitgirder/io.rb', line 1043

def self.for_pid( pid )
    
    ps_str = self.ps_str_for( pid )
    self.send( :new, pid, ps_str )
end

.ps_str_for(pid) ⇒ Object



1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
# File 'lib/bitgirder/io.rb', line 1031

def self.ps_str_for( pid )
    
    res = `ps -p #{pid} -w -o command= -o lstart=`.chomp
    res = nil if res.empty?

    unless $?.success? || ( ( ex = $?.exitstatus ) == 1 && res == nil )
        raise "Couldn't get ps info for #{pid} (ps exited #{ex}: #{res})"
    end

    res
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


1027
1028
1029
# File 'lib/bitgirder/io.rb', line 1027

def alive?
    self.class.ps_str_for( @pid ) == @ps_str
end