ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? U:RDoc::AnyMethod[iI" waitpid:ETI"Process::waitpid;TT: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [ I"IWaits for a suitable child process to exit, returns its process ID, ;TI"6and sets $? to a Process::Status object ;TI"-containing information on that process. ;TI"FWhich child it waits for depends on the value of the given +pid+:;To:RDoc::Markup::BlankLineo:RDoc::Markup::List: @type: BULLET: @items[ o:RDoc::Markup::ListItem: @label0; [o; ; [I"MPositive integer: Waits for the child process whose process ID is +pid+:;T@o:RDoc::Markup::Verbatim; [ I"?pid0 = Process.spawn('ruby', '-e', 'exit 13') # => 230866 ;TI"?pid1 = Process.spawn('ruby', '-e', 'exit 14') # => 230891 ;TI"?Process.wait(pid0) # => 230866 ;TI"_$? # => # ;TI"?Process.wait(pid1) # => 230891 ;TI"_$? # => # ;TI"JProcess.wait(pid0) # Raises Errno::ECHILD ;T: @format0o;;0; [ o; ; [I"<0: Waits for any child process whose group ID ;TI"0is the same as that of the current process:;T@o;; [I"1parent_pgpid = Process.getpgid(Process.pid) ;TI"8puts "Parent process group ID is #{parent_pgpid}." ;TI"child0_pid = fork do ;TI", puts "Child 0 pid is #{Process.pid}" ;TI"2 child0_pgid = Process.getpgid(Process.pid) ;TI"M puts "Child 0 process group ID is #{child0_pgid} (same as parent's)." ;TI" end ;TI"child1_pid = fork do ;TI", puts "Child 1 pid is #{Process.pid}" ;TI"' Process.setpgid(0, Process.pid) ;TI"2 child1_pgid = Process.getpgid(Process.pid) ;TI"T puts "Child 1 process group ID is #{child1_pgid} (different from parent's)." ;TI" end ;TI"%retrieved_pid = Process.wait(0) ;TI"Qputs "Process.wait(0) returned pid #{retrieved_pid}, which is child 0 pid." ;TI" begin ;TI" Process.wait(0) ;TI"rescue Errno::ECHILD => x ;TI"h puts "Raised #{x.class}, because child 1 process group ID differs from parent process group ID." ;TI" end ;T;0o; ; [I" Output:;T@o;; [ I"(Parent process group ID is 225764. ;TI"Child 0 pid is 225788 ;TI"-1 (default): Waits for any child process:;T@o;; [I"1parent_pgpid = Process.getpgid(Process.pid) ;TI"8puts "Parent process group ID is #{parent_pgpid}." ;TI"child0_pid = fork do ;TI", puts "Child 0 pid is #{Process.pid}" ;TI"2 child0_pgid = Process.getpgid(Process.pid) ;TI"M puts "Child 0 process group ID is #{child0_pgid} (same as parent's)." ;TI" end ;TI"child1_pid = fork do ;TI", puts "Child 1 pid is #{Process.pid}" ;TI"' Process.setpgid(0, Process.pid) ;TI"2 child1_pgid = Process.getpgid(Process.pid) ;TI"T puts "Child 1 process group ID is #{child1_pgid} (different from parent's)." ;TI"C sleep 3 # To force child 1 to exit later than child 0 exit. ;TI" end ;TI"+child_pids = [child0_pid, child1_pid] ;TI"&retrieved_pid = Process.wait(-1) ;TI"-puts child_pids.include?(retrieved_pid) ;TI"&retrieved_pid = Process.wait(-1) ;TI"-puts child_pids.include?(retrieved_pid) ;T;0o; ; [I" Output:;T@o;; [ I"(Parent process group ID is 228736. ;TI"Child 0 pid is 228758 ;TI"-1: Waits for any child whose process group ID is -pid:;T@o;; [I"1parent_pgpid = Process.getpgid(Process.pid) ;TI"8puts "Parent process group ID is #{parent_pgpid}." ;TI"child0_pid = fork do ;TI", puts "Child 0 pid is #{Process.pid}" ;TI"2 child0_pgid = Process.getpgid(Process.pid) ;TI"M puts "Child 0 process group ID is #{child0_pgid} (same as parent's)." ;TI" end ;TI"child1_pid = fork do ;TI", puts "Child 1 pid is #{Process.pid}" ;TI"' Process.setpgid(0, Process.pid) ;TI"2 child1_pgid = Process.getpgid(Process.pid) ;TI"T puts "Child 1 process group ID is #{child1_pgid} (different from parent's)." ;TI" end ;TI" sleep 1 ;TI"/retrieved_pid = Process.wait(-child1_pid) ;TI"[puts "Process.wait(-child1_pid) returned pid #{retrieved_pid}, which is child 1 pid." ;TI" begin ;TI"! Process.wait(-child1_pid) ;TI"rescue Errno::ECHILD => x ;TI"h puts "Raised #{x.class}, because there's no longer a child with process group id #{child1_pid}." ;TI" end ;T;0o; ; [I" Output:;T@o;; [ I"(Parent process group ID is 230083. ;TI"Child 0 pid is 230108 ;TI" integer ;T0[I" (*args);T@FI" Process;TcRDoc::NormalModule00