NAME

     setpgid, getpgid, setpgrp, getpgrp - set/get process group


SYNOPSIS

     #include <unistd.h>

     int setpgid(pid_t pid, pid_t pgid));
     pid_t getpgid(pid_t pid));
     int setpgrp(void);
     pid_t getpgrp(void);


DESCRIPTION

     setpgid sets the process group ID of the  process  specified
     by  pid  to  pgid.   If  pid  is zero, the process ID of the
     current process is used.  If pgid is zero, the process ID of
     the process specified by pid is used.

     getpgid returns the process group ID of the  process  speci-
     fied  by pid.  If pid is zero, the process ID of the current
     process is used.

     In  the  Linux  DLL  4.4.1  library,  setpgrp  simply  calls
     setpgid(0,0).

     getpgrp is equivalent to getpgid(0).

     Process groups are used for distribution of signals, and  by
     terminals  to  arbitrate requests for their input: processes
     that have the same process group as the terminal  are  fore-
     ground  and  may read, while others will block with a signal
     if they attempt to read.

     These calls are thus used by  programs  such  as  csh(1)  to
     create  process  groups  in  implementing  job control.  The
     TIOCGPGRP and TIOCSPGRP calls described  in  termios(4)  are
     used to get/set the process group of the control terminal.


RETURN VALUE

     On success, setpgid and setpgrp return zero.  On  error,  -1
     is returned, and errno is set appropriately.

     getpgid returns a process group on success.  On error, -1 is
     returned, and errno is set appropriately.

     getpgrp always returns the current process group.


ERRORS

     EINVAL  pgid is less than 0.

     EPERM   Various permission violations.

     ESRCH   pid does not match any process.


CONFORMING TO

     SVr4, POSIX, 4.4BSD.


CONFORMING TO

     The functions setpgid and getpgrp conform to  POSIX.1.   The
     function setpgrp is from BSD 4.2.  The function getpgid con-
     forms to SVr4.


SEE ALSO

     getuid(2), setsid(2), tcsetpgrp(3), termios(4)