waitpid

waitpid

ri

 -------------------------------------------------------- Process#waitpid
      Process.wait()                     => fixnum
      Process.wait(pid=-1, flags=0)      => fixnum
      Process.waitpid(pid=-1, flags=0)   => fixnum
 ------------------------------------------------------------------------
      Waits for a child process to exit, returns its process id, and sets
       $?  to a  Process::Status  object containing information on that
      process. Which child it waits on depends on the value of _pid_:
 
      > 0:  Waits for the child whose process ID equals _pid_.
 
      0:    Waits for any child whose process group ID equals that of the
            calling process.
 
      -1:   Waits for any child process (the default if no _pid_ is
            given).
 
      < -1: Waits for any child whose process group ID equals the
            absolute value of _pid_.
 
      The _flags_ argument may be a logical or of the flag values
       Process::WNOHANG  (do not block if no child available) or
       Process::WUNTRACED  (return stopped children that haven't been
      reported). Not all flags are available on all platforms, but a flag
      value of zero will work on all platforms.
 
      Calling this method raises a  SystemError  if there are no child
      processes. Not available on all platforms.
 
         include Process
         fork { exit 99 }                 #=> 27429
         wait                             #=> 27429
         $?.exitstatus                    #=> 99
      
         pid = fork { sleep 3 }           #=> 27440
         Time.now                         #=> Wed Apr 09 08:57:09 CDT 2003
         waitpid(pid, Process::WNOHANG)   #=> nil
         Time.now                         #=> Wed Apr 09 08:57:09 CDT 2003
         waitpid(pid, 0)                  #=> 27440
         Time.now                         #=> Wed Apr 09 08:57:12 CDT 2003
 

refe

 Process.waitpid
 --- Process.waitpid(pid[, flags])
 --- Process.waitpid2(pid[, flags])
 
     pid で指定される特定の子プロセスの終了を待ち、そのプロセスが
     終了した時に pid を返します。子プロセスが存在しなければ例外 
     Errno::ECHILD [Errno::EXXX] が発生します。
 
     flags には、Process モジュールの定数 
     WNOHANG(ノンブロッキングモード)と
     WUNTRACED の論理和を指定します。省略したときの値は 0 
     です。
 
     ノンブロッキングモードで子プロセスがまだ終了していない時には 
     nil を返します。waitpid(2) [manual page] か 
     wait4(2) [manual page] の実装されていないマシンでは 
     flags はいつも nil または 0 を指定する必要があります。
 
     waitpid2 は、その戻り値pid$?配列
     である点だけが異なります。
 
     ruby 1.7 feature:
     version 1.7 からは $?Process::Status オブジェクト
     です。