SETPGID(2) BSD Programmer's Manual SETPGID(2)
setpgid, setpgrp - set process group
#include <unistd.h> int setpgid(pid_t pid, pid_t pgrp); int setpgrp(pid_t pid, pid_t pgrp);
setpgid() sets the process group of the specified process pid to the specified pgrp. If pid is zero, then the call applies to the current pro- cess. If the invoker is not the superuser, then the affected process must have the same effective user ID as the invoker or be a descendant of the in- voking process.
setpgid() returns 0 when the operation was successful. If the request failed, -1 is returned and the global variable errno indicates the rea- son.
setpgid() will fail and the process group will not be altered if: [EACCES] The value of the pid argument matches the process ID of a child process of the calling process, and the child process has successfully executed one of the exec functions. [EINVAL] The value of the pgrp argument is less than zero. [EPERM] The effective user ID of the requested process is different from that of the caller and the process is not a descendant of the calling process. [ESRCH] The value of the pid argument does not match the process ID of the calling process or of a child process of the calling process.
getpgrp(2)
setpgrp() is identical to setpgid(), and is retained for calling conven- tion compatibility with historical versions of BSD. The setpgid() function conforms to IEEE Std 1003.1-1988 ("POSIX.1"). MirBSD #10-current June 4, 1993 1