*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> waitpid (2)              
Title
Content
Arch
Section
 

wait(2)

Contents


NAME    [Toc]    [Back]

       wait,  waitpid, wait3, wait4 - Wait for a child process to
       stop or terminate

SYNOPSIS    [Toc]    [Back]

       #include <sys/wait.h>

       pid_t wait(
               int *status_location ); pid_t waitpid(
               pid_t process_id,
               int *status_location,
               int options ); pid_t wait3(
               int *status_location,
               int options,
               struct rusage *resource_usage );

       The following function declarations do not conform to current
 standards and are supported only for backward compatibility:
 #include <sys/resource.h>

       pid_t wait3(
               union wait *status_location,
               int options,
               struct rusage *resource_usage ); pid_t wait4(
               pid_t process_id,
               union wait *status_location,
               int options,
               struct rusage *resource_usage );

       Application developers may want  to  specify  an  #include
       statement   for   <sys/types.h>   before   the   one   for
       <sys/wait.h> if programs are being developed for  multiple
       platforms.   The  additional  #include  statement  is  not
       required on Tru64 UNIX systems or by  industry  standards,
       but may be required on other vendors' systems that conform
       to these standards.

       See NOTES for further information on the backward-compatible
 versions of wait3() and wait4().

STANDARDS    [Toc]    [Back]

       Interfaces  documented  on  this reference page conform to
       industry standards as follows:

       wait(): XSH4.0, XSH4.2, XSH5.0

       waitpid(), wait3(): XSH4.2, XSH5.0

       Refer to the standards(5) reference page for more information
 about industry standards and associated tags.

PARAMETERS    [Toc]    [Back]

       Points  to a location that contains the termination status
       of the child process as defined in the <sys/wait.h> header
       file.   Specifies  the  child process or set of child processes.
  Modifies the behavior of the function. The  flags
       for  the  options  parameter are described in DESCRIPTION.
       Specifies the location of a structure  that  will  contain
       the  resource  usage  information for child processes that
       have terminated.


DESCRIPTION    [Toc]    [Back]

       The wait(), waitpid(), and  wait3()  functions  allow  the
       calling process to obtain status information pertaining to
       one of its child processes. Various options permit  status
       information  to  be obtained for child processes that have
       terminated or stopped. If status information is  available
       for  two or more child processes, the order in which their
       status is reported is unspecified.

       The wait() function suspends execution of the calling process
  until  status  information for one of its terminated
       child processes is available, or until delivery of a  signal
  whose  action  is either to execute a signal-catching
       function or to terminate the process. If  status  information
  is  available prior to the call to wait(), return is
       immediate.

       The effect of the wait() function can be modified by  setting
  the SIGCHLD signal. See sigaction(2) for more information.


       The waitpid() function behaves identically  to  wait()  if
       the  process_id parameter has a value of (pid_t)-1 and the
       options parameter specifies a value of  zero  (0).  Should
       these parameters contain other values, the waitpid() function
 is changed as specified by those values.

       The wait3() function is similar to waitpid()  in  allowing
       the calling process to obtain status information for specified
 child processes. The wait3() function also  includes
       a  resource_usage  parameter.  If  this parameter is not a
       null pointer, the rusage structure pointed to by the third
       argument  is filled in for the child process identified by
       the return value.

       [Tru64 UNIX]  The wait4() function is similar to  wait3(),
       except  that  wait4()  waits for a specific child as indicated
 by the process_id parameter. A  program  that  calls
       wait4() must be compiled with the _BSD switch defined. See
       NOTES for further information.

       In a multithreaded  environment,  the  wait(),  waitpid(),
       wait3(),  and  wait4()  functions  block  only the calling
       thread.

       The process_id parameter allows  the  calling  process  to
       gather  status from a specific set of child processes. The
       waitpid() and wait4() functions return the status only  of
       child  processes from this set. The following rules define
       the  set:  If  the  process_id  parameter  is   equal   to
       (pid_t)-1,  status is requested for any child process.  In
       this respect, the waitpid() function is equivalent to  the
       wait()  function.   If the process_id parameter is greater
       than zero (0), it specifies the process  ID  of  a  single
       child  process for which status is requested.  If the process_id
  parameter  is  equal  to  zero  (0),  status   is
       requested  for any child process whose process group ID is
       equal to that of the calling process.  If  the  process_id
       parameter  is less than (pid_t)-1, status is requested for
       any child process whose process group ID is equal  to  the
       absolute value of the process_id parameter.

       The  options  parameter  to  the  waitpid(),  wait3(), and
       wait4() functions modifies the behavior of  the  function.
       The  flags  for  the  options parameter can be combined by
       specifying them in a bitwise-inclusive OR  operation.  The
       flags  are  as  follows: [XSH4.2]  Specifies reporting the
       status of any child process identified by  the  process_id
       parameter whose status has not been reported since it continued
 from a job control stop.   [Tru64  UNIX]  Specifies
       that  the process whose status is returned in status_location
 will be kept in a waitable state. The process can  be
       waited  for  again  with  the  same results.  Prevents the
       calling process from being suspended. If there  are  child
       processes  that  have  been  stopped or terminated, one is
       chosen and waitpid() returns its pid,  just  as  when  the
       WNOHANG  flag is not specified.  If there are no such processes
 (that is, if conditions  are  such  that  waitpid()
       without  the WNOHANG flag would have suspended the calling
       process), zero (0) is returned. Because you can never wait
       for  process  0,  there  is no confusion arising from this
       return.  Specifies that the call return additional  information
  when  the  child  process  is  stopped  because it
       received a SIGTTIN, SIGTTOU, SIGSTOP, or SIGTSTOP  signal.

       [XSH4.2]  If  the  calling process has SA_NOCLDWAIT set or
       has SIGCHLD  set  to  SIG_IGN,  and  the  process  has  no
       unwaited-for  child  processes  that were transformed into
       zombie processes, it will block until  all  of  its  child
       processes  terminate,  and  wait() and waitpid() will fail
       and set errno to [ECHILD].

       If the wait(), waitpid(), wait3(),  or  wait4()  functions
       return because the status of a child process is available,
       the process ID of the child process is returned.  In  this
       instance, information is stored in the location pointed to
       by the status_location parameter if the value of the  status_location
 is not null. The value stored in the location
       pointed to by the status_location parameter  is  zero  (0)
       if,  and only if, the status is returned from a terminated
       child process that did one of the following: Returned zero
       (0)  from the main() routine.  Passed zero (0) as the status
 argument to the _exit() or exit() function.

       Regardless of its value, this information can  be  defined
       using  the  macros defined in the <sys/wait.h> header file
       that evaluate to integral expressions.  In  the  following
       macro descriptions, the status_value parameter is equal to
       the integer value pointed to by the status_location parameter:
  Evaluates to a nonzero value if status was returned
       for a child process  that  terminated  normally.   If  the
       value  of  WIFEXITED(status_value)  is nonzero, this macro
       evaluates to the low-order 8 bits of the status  parameter
       that  the  child  process  passed to the _exit() or exit()
       function, or the value the child process returned from the
       main()  routine.  Evaluates to nonzero value if status was
       returned for a child process that terminated  due  to  the
       receipt  of a signal that was not caught.  If the value of
       WIFSIGNALED(status_value) is nonzero, this macro evaluates
       to the number of the signal that caused the termination of
       the child process.  Evaluates to a nonzero value if status
       was  returned  for  a  child  process  that  is  currently
       stopped.  If  the  value  of  WIFSTOPPED(status_value)  is
       nonzero,  this macro evaluates to the number of the signal
       that caused the child process to  stop.   [XSH4.2]  Evaluates
  to  a  non-zero  value  if status was returned for a
       child process that has continued from a job control  stop.




                                  Note

       [Tru64  UNIX]  The  following behavior described for waitpid()
 and wait3() also applies to the libbsd  versions  of
       wait3()  and  wait4(),  except the parameter to the macros
       should be the w_status member of the union pointed  to  by
       the status_location parameter.

       If  the  information  pointed  to  by  the status_location
       parameter was stored by a call  to  waitpid()  or  wait3()
       that  specified the WUNTRACED flag and did not specify the
       WCONTINUED flag, one of the following macros evaluates  to
       a   nonzero   value:  WIFEXITED(*status_location)  WIFSIGNALED(*status_location)
 WIFSTOPPED(*status_location)

       If the  information  pointed  to  by  status_location  was
       stored  by  a  call to waitpid() or wait3() that specified
       both the WUNTRACED and WCONTINUED flags, one of  the  following
   macros  evaluates  to  a  nonzero  value:  WIFEXITED(*status_location)
 WIFSIGNALED(*status_location)  WIFSTOPPED(*status_location)
 WIFCONTINUED(*status_location)

       If  the  information  pointed  to  by  status_location was
       stored by a call to waitpid() or  wait3()  that  specified
       neither  the  WUNTRACED  nor  the WCONTINUED flag, or by a
       call to the wait() function, one of the  following  macros
       evaluates  to a nonzero value: WIFEXITED(*status_location)
       WIFSIGNALED(*status_location)

       If the  information  pointed  to  by  status_location  was
       stored  by  a  call  to  waitpid() or wait3() that did not
       specify the WUNTRACED flag and  specified  the  WCONTINUED
       flag,  or by a call to wait(), one of the following macros
       evaluates to a nonzero value:  WIFEXITED(*status_location)
       WIFSIGNALED(*status_location)   WIFCONTINUED(*status_location)


       If a parent process terminates without waiting for all  of
       its child processes to terminate, the remaining child processes
 will be assigned a parent process ID equal  to  the
       process ID of the init process.

NOTES    [Toc]    [Back]

       [Tru64  UNIX]  Compiling  with the _BSD switch defined and
       then linking with the libbsd compatibility  library  redefines
 the status_location parameter as the type union wait
       * instead of int *.  Programs using the  backward-compatible
 versions of wait3() and wait4() functions must be compiled
 in this manner.

       Paragraphs flagged with [XSH4.2]   apply  to  applications
       built in compilation environments conforming to XSH4.2 and
       higher versions of the XSH specification.

RETURN VALUES    [Toc]    [Back]

       If the wait(), waitpid(),  wait3(),  or  wait4()  function
       returns  because  the  status of a child process is available,
 the process ID of the child is returned to the calling
  process. If the function returns because a signal was
       caught by the calling process, -1 is returned and errno is
       set to [EINTR].

       If the waitpid(), wait3(), or wait4() function was invoked
       with the WNOHANG flag specified, it has at least one child
       process  specified  by  pid for which status is not available,
  and  status  is  not  available  for  any   process
       specified  by pid, a value of 0 (zero) is returned. Otherwise,
 (pid_t)-1 is returned, and errno is set to  indicate
       the error.

ERRORS    [Toc]    [Back]

       The  wait(), waitpid(), wait3(), and wait4() functions set
       errno to the following values: The calling process has  no
       existing  unwaited-for  child processes.  The function was
       terminated by receipt of a signal.  [Tru64 UNIX]  The status_location
 or resource_usage parameter points to a location
 outside of the address space of the process.

       The waitpid() function also  fails  if  the  following  is
       true:  The  process  or  process group ID specified by the
       process_id parameter does not exist or is not a child process
 of the calling process.

       The waitpid(), wait3(), and wait4() functions also fail if
       the following is true: The value of the options  parameter
       is not valid.

SEE ALSO    [Toc]    [Back]

      
      
       Functions:   exec(2),   exit(2),   fork(2),  getrusage(2),
       ptrace(2), sigaction(2), pause(3)

       Standards: standards(5)



                                                          wait(2)
[ Back ]
 Similar pages
Name OS Title
wait HP-UX wait for child process to stop or terminate
waitpid HP-UX wait for child process to stop or terminate
wait IRIX wait for child processes to stop or terminate
wait IRIX wait for child processes to stop or terminate
waitid HP-UX wait for child process to change state
wait4 HP-UX wait for child process to change state
waitid Tru64 Wait for child process to change state
waitid IRIX wait for child process to change state
wait3 HP-UX wait for child process to change state
pthread_atfork Tru64 Declares fork handler routines to be called when the calling thread's process forks a child process
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service