module Spring::SID
def self.fiddle_func
def self.fiddle_func @fiddle_func ||= Fiddle::Function.new( DL::Handle::DEFAULT['getsid'], [Fiddle::TYPE_INT], Fiddle::TYPE_INT ) end
def self.pgid
def self.pgid Process.getpgid(sid) end
def self.sid
def self.sid @sid ||= begin if Process.respond_to?(:getsid) # Ruby 2 Process.getsid elsif defined?(Fiddle) and defined?(DL) # Ruby 1.9.3 compiled with libffi support fiddle_func.call(0) else # last resort: shell out `ps -p #{Process.pid} -o sess=`.to_i end end end