IceWalkers.com - Linux Software downloads and news
Name : Password :
Linux SoftwareLinux RPMLinux HowtosLink UsAboutAdvertise

waitpid (2)

WAIT(2)                    Linux Programmer's Manual                   WAIT(2)



NAME
       wait, waitpid - wait for process termination

SYNOPSIS
       #include<sys/types.h>
       #include<sys/wait.h>

       pid_twait(int*status);
       pid_twaitpid(pid_t pid,int*status,int options);

DESCRIPTION
       The  wait  function  suspends  execution of the current process until a
       child has exited, or until a signal is delivered  whose  action  is  to
       terminate  the  current  process or to call a signal handling function.
       If a child has already exited by the time  of  the  call  (a  so-called
       "zombie"  process),  the  function  returns  immediately.   Any  system
       resources used by the child are freed.

       The waitpid function suspends execution of the current process until  a
       child as specified by the pid argument has exited, or until a signal is
       delivered whose action is to terminate the current process or to call a
       signal  handling  function.  If a child as requested by pid has already
       exited by the time of the call  (a  so-called  "zombie"  process),  the
       function  returns  immediately.  Any system resources used by the child
       are freed.

       The value of pid can be one of:

       < -1   which means to wait for any child process whose process group ID
              is equal to the absolute value of pid.

       -1     which  means  to  wait  for  any child process; this is the same
              behaviour which wait exhibits.

       0      which means to wait for any child process whose process group ID
              is equal to that of the calling process.

       > 0    which  means  to wait for the child whose process ID is equal to
              the value of pid.

       The value of options is an OR of zero or more  of  the  following  con-
       stants:

       WNOHANG
              which means to return immediately if no child has exited.

       WUNTRACED
              which  means  to also return for children which are stopped (but
              not traced), and whose status has not been reported.  Status for
              traced  children which are stopped is provided also without this
              option.

       (For Linux-only options, see below.)

       If status is not NULL, wait or waitpid store status information in  the
       location pointed to by status.

       This  status  can  be evaluated with the following macros (these macros
       take the stat buffer (an int) as an argument -- not  a  pointer  to  the
       buffer!):

       WIFEXITED(status)
              is non-zero if the child exited normally.

       WEXITSTATUS(status)
              evaluates to the least significant eight bits of the return code
              of the child which terminated, which may have been  set  as  the
              argument  to  a  call  to exit() or as the argument for a return
              statement in the main program.  This macro can only be evaluated
              if WIFEXITED returned non-zero.

       WIFSIGNALED(status)
              returns  true  if  the  child process exited because of a signal
              which was not caught.

       WTERMSIG(status)
              returns the number of the signal that caused the  child  process
              to  terminate.  This  macro can only be evaluated if WIFSIGNALED
              returned non-zero.

       WIFSTOPPED(status)
              returns true if the child process which  caused  the  return  is
              currently  stopped;  this  is only possible if the call was done
              using  WUNTRACED  or  when  the  child  is  being  traced   (see
              ptrace(2)).

       WSTOPSIG(status)
              returns the number of the signal which caused the child to stop.
              This  macro  can  only  be  evaluated  if  WIFSTOPPED   returned
              non-zero.

       Some  versions  of  Unix (e.g. Linux, Solaris, but not AIX, SunOS) also
       define a macro WCOREDUMP(status) to  test  whether  the  child  process
       dumped core. Only use this enclosed in #ifdef WCOREDUMP ... #endif.

RETURNVALUE
       The  process  ID of the child which exited, or zero if WNOHANG was used
       and no child was available, or -1 on error (in which case errno is  set
       to an appropriate value).

ERRORS
       ECHILD if the process specified in pid does not exist or is not a child
              of the calling process.  (This can happen for one's own child if
              the  action  for  SIGCHLD  is set to SIG_IGN. See also the LINUX
              NOTES section about threads.)

       EINVAL if the options argument was invalid.

       EINTR  if WNOHANG was not set and an unblocked signal or a SIGCHLD  was
              caught.

NOTES
       The  Single  Unix Specification describes a flag SA_NOCLDWAIT (not sup-
       ported under Linux) such that if either this flag is set, or the action
       for  SIGCHLD  is  set  to SIG_IGN then children that exit do not become
       zombies and a call to wait() or waitpid() will block until all children
       have exited, and then fail with errno set to ECHILD.

       The  original  POSIX  standard left the behaviour of setting SIGCHLD to
       SIG_IGN  unspecified.   Later  standards,  including  SUSv2  and  POSIX
       1003.1-2001  specify  the behaviour just described as an XSI-compliance
       option.  Linux does not conform to the second of the  two  points  just
       described: if a wait() or waitpid() call is made while SIGCHLD is being
       ignored, the call behaves just as though SIGCHLD were not being igored,
       that  is,  the  call  blocks  until  the next child terminates and then
       returns the PID and status of that child.

LINUXNOTES
       In the Linux kernel, a kernel-scheduled thread is not a  distinct  con-
       struct  from  a  process. Instead, a thread is simply a process that is
       created using the Linux-unique clone(2)  system  call;  other  routines
       such  as  the  portable  pthread_create(3)  call  are implemented using
       clone(2).  Before Linux 2.4, a thread was just a special case of a pro-
       cess, and as a consequence one thread could not wait on the children of
       another thread, even when the latter belongs to the same thread  group.
       However,  POSIX  prescribes  such  functionality, and since Linux 2.4 a
       thread can, and by default will, wait on children of other  threads  in
       the same thread group.

       The  following Linux-specific options are for use with children created
       using clone(2).

       __WCLONE
              Wait for "clone" children only.  If omitted then wait for  "non-
              clone" children only.  (A "clone" child is one which delivers no
              signal, or a signal other than SIGCHLD to its parent upon termi-
              nation.)  This option is ignored if __WALL is also specified.

       __WALL (Since  Linux  2.4)  Wait  for  all children, regardless of type
              ("clone" or "non-clone").

       __WNOTHREAD
              (Since Linux 2.4) Do not wait for children of other  threads  in
              the same thread group. This was the default before Linux 2.4.

CONFORMINGTO
       SVr4, POSIX.1

SEEALSO
       clone(2), ptrace(2), signal(2), wait4(2), pthread_create(3), signal(7)



Linux                             2000-07-24                           WAIT(2)

_Exitgetsockoptoutwshmat
_exitgettidoutw_pshmctl
_llseekgettimeofdaypauseshmdt
_newselectgetuidpersonalityshmget
_sysctlgttypipeshmop
acceptidlepivot_rootshutdown
accessinbpollsigaction
acctinb_pprctlsigaltstack
adjtimexinlpreadsigblock
afs_syscallinl_pprofsiggetmask
alarminsbpselectsigmask
alloc_hugepagesinslptracesignal
arch_prctlinswpwritesigpause
bdflushintroquotactlsigpending
bindinwreadsigprocmask
breakinw_preaddirsigqueue
brkioctlreadlinksigreturn
cacheflushioctl_listreadvsigsetmask
capgetiopermrebootsigsuspend
capsetioplrecvsigtimedwait
chdiripcrecvfromsigvec
chmodkillrecvmsgsigwaitinfo
chownkillpgrenamesocket
chrootlchownrmdirsocketcall
clonelinksbrksocketpair
closelistensched_get_priority_maxssetmask
connectllseeksched_get_priority_minstat
creatlocksched_getaffinitystatfs
duplseeksched_getparamstime
dup2lstatsched_getschedulerstty
execvemadvisesched_rr_get_intervalswapoff
exitmincoresched_setaffinityswapon
fchdirmkdirsched_setparamsymlink
fchmodmknodsched_setschedulersync
fchownmlocksched_yieldsyscall
fcntlmlockallselectsyscalls
fdatasyncmmapselect_tutsysctl
flockmmap2semctlsysfs
forkmodify_ldtsemgetsysinfo
free_hugepagesmountsemopsyslog
fstatmprotectsendtime
fstatfsmpxsendfiletimes
fsyncmremapsendmsgtkill
ftruncatemsgctlsendtotruncate
futexmsggetsetcontextumask
getcontextmsgopsetdomainnameumount
getdentsmsgrcvsetegidumount2
getdomainnamemsgsndseteuiduname
getdtablesizemsyncsetfsgidundocumented
getegidmunlocksetfsuidunimplemented
geteuidmunlockallsetgidunlink
getgidmunmapsetgroupsuselib
getgroupsnanosleepsethostidustat
gethostidnfsservctlsethostnameutime
gethostnamenicesetitimerutimes
getitimerobsoletesetpgidvfork
getpagesizeoldfstatsetpgrpvhangup
getpeernameoldlstatsetpriorityvm86
getpgidoldoldunamesetregidwait
getpgrpoldstatsetresgidwait3
getpidoldunamesetresuidwait4
getppidopensetreuidwaitpid
getpriorityoutbsetrlimitwrite
getresgidoutb_psetsidwritev
getresuidoutlsetsockopt 
getrlimitoutl_psettimeofday 
getrusageoutsbsetuid 
getsidoutslsetup 


My Money 2.0.49
Personal financial software
Linux Kernel 2.6 2.6.32-rc8
Linux Kernel
GCstar 1.5.0
Personal collections manager
ImageMagick 6.5.7.9
ImageMagick image processing studio
BibleTime 2.4
Bible study software for Linux / KDE
PHP 5.3.1
Server-side, cross-platform, HTML embedded scripting language.
LFTP 4.0.4
Shell-like command line ftp client.
GNOME 2.29.2
GNOME desktop environment
Midgard 9.09.0
Web application development and publishing platform
Totem 2.28.4
Movie player for Gnome
Free IT Magazines, White Papers, eBooks, and more !
Oracle Magazine

Contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more.

Vulnerability Management for Dummies

Get all the Facts and See How to Implement a Successful Vulnerability Management Program.

Website Magazine

Has tapped premier talent in the Internet industry for our content and each and every issue will contain practical advice and insights for website owners.

Linux Software Map
Find Linux RPM
Best Rated Linux Software
Most Rated Linux Software
Linux Distributions
Linux Howtos
Quick Survey

Please take our survey and help us improve our website to serve you better.

Thank you.
Linux Software
Linux / IT Resources
Site Resources
Google
Privacy Policy
Contact Us
Submit Software
Advertising info