Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


SETPGID(2)                    System Calls Manual                   SETPGID(2)

NAME
     setpgid, setpgrp - set process group

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <unistd.h>

     int
     setpgid(pid_t pid, pid_t pgrp);

     int
     setpgrp(pid_t pid, pid_t pgrp);

DESCRIPTION
     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
     process.  If pgrp is zero, then the process id of the process specified
     by pid is used instead.

     If the invoker is not the super-user, then the affected process must have
     the same effective user-id as the invoker or be a descendant of the
     invoking process.

     In general to set the process group of a newly forked subprocess, both
     the child and parent processes should call setpgid() to ensure that the
     process group change takes effect in a timely fashion.  One call will
     succeed and the other will fail, depending on process scheduling.

RETURN VALUES
     setpgid() returns 0 when the operation was successful.  If the request
     failed, -1 is returned and the global variable errno indicates the
     reason.

COMPATIBILITY
     setpgrp() is identical to setpgid(), and is retained for calling
     convention compatibility with historical versions of BSD.

ERRORS
     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.

SEE ALSO
     getpgrp(2)

STANDARDS
     The setpgid() function conforms to IEEE Std 1003.1-1990 ("POSIX.1").

NetBSD 10.99                    March 15, 2022                    NetBSD 10.99