module FFI::LibC

Constants

NI_DGRAM
NI_MAXHOST
NI_MAXSERV
NI_NAMEREQD
NI_NOFQDN
NI_NUMERICHOST
NI_NUMERICSERV
NULL

The NULL constant

RUSAGE_CHILDREN
RUSAGE_SELF

bits/resource.h (Linux) / sys/resource.h (Darwin)

RUSAGE_THREAD

Public Class Methods

each_ifaddr() { |ifaddr| ... } click to toggle source

Enumerates over the Interface Addresses.

@yield [ifaddr]

The given block will be passed each Interface Address.

@yieldparam [Ifaddrs] ifaddr

An Interface Address.

@return [Enumerator]

If no block is given, an enumerator will be returned.

@since 0.1.0

# File lib/ffi/libc/libc.rb, line 165
def self.each_ifaddr
  return enum_for(__method__) unless block_given?

  ptr = MemoryPointer.new(:pointer)

  if getifaddrs(ptr) == -1
    raise_error
  end

  if (ifaddrs = ptr.get_pointer(0)).null?
    return
  end

  ifaddr = Ifaddrs.new(ifaddrs)

  while ifaddr
    yield ifaddr

    ifaddr = ifaddr.next
  end

  freeifaddrs(ifaddrs)
end
raise_error(error=self.errno) click to toggle source
# File lib/ffi/libc/libc.rb, line 26
def self.raise_error(error=self.errno)
  raise(strerror(error))
end
rusage(who=RUSAGE_SELF) click to toggle source

Gets the RUsage for the user.

@param [RUSAGE_SELF, RUSAGE_CHILDREN, RUSAGE_THREAD] who

Whome to get RUsage statistics for.

@return [RUsage]

The RUsage statistics.

@raise [RuntimeError]

An error has occurred.

@since 0.1.0

# File lib/ffi/libc/libc.rb, line 210
def self.rusage(who=RUSAGE_SELF)
  rusage = RUsage.new

  unless (ret = getrusage(who,rusage)) == 0
    raise_error(ret)
  end

  return rusage
end