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