class ChildProcess::Windows::Process::Job

Public Class Methods

new() click to toggle source
# File lib/childprocess/windows/process.rb, line 94
def initialize
  @pointer = Lib.create_job_object(nil, nil)

  if @pointer.nil? || @pointer.null?
    raise Error, "unable to create job object"
  end

  basic = JobObjectBasicLimitInformation.new
  basic[:LimitFlags] = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE

  extended = JobObjectExtendedLimitInformation.new
  extended[:BasicLimitInformation] = basic

  ret = Lib.set_information_job_object(
    @pointer,
    JOB_OBJECT_EXTENDED_LIMIT_INFORMATION,
    extended,
    extended.size
  )

  Lib.check_error ret
end

Public Instance Methods

<<(handle) click to toggle source
# File lib/childprocess/windows/process.rb, line 117
def <<(handle)
  Lib.check_error Lib.assign_process_to_job_object(@pointer, handle.pointer)
end
close() click to toggle source
# File lib/childprocess/windows/process.rb, line 121
def close
  Lib.close_handle @pointer
end