Class: ChildProcess::Windows::Process::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/childprocess/windows/process.rb

Instance Method Summary collapse

Constructor Details

#initialize(detach, leader) ⇒ Job

Returns a new instance of Job.


96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/childprocess/windows/process.rb', line 96

def initialize(detach, leader)
  @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 if !detach
  basic[:LimitFlags] |= JOB_OBJECT_LIMIT_BREAKAWAY_OK if leader

  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

Instance Method Details

#<<(handle) ⇒ Object


120
121
122
# File 'lib/childprocess/windows/process.rb', line 120

def <<(handle)
  Lib.check_error Lib.assign_process_to_job_object(@pointer, handle.pointer)
end

#closeObject


124
125
126
# File 'lib/childprocess/windows/process.rb', line 124

def close
  Lib.close_handle @pointer
end