setpgid(2) System Calls Manual setpgid(2) setpgid, getpgid, setpgrp, getpgrp - / (libc -lc) #include int setpgid(pid_t pid, pid_t pgid); pid_t getpgid(pid_t pid); pid_t getpgrp(void); /* POSIX.1 version */ [[deprecated]] pid_t getpgrp(pid_t pid); /* BSD version */ int setpgrp(void); /* System V version */ [[deprecated]] int setpgrp(pid_t pid, pid_t pgid); /* BSD version */ glibc ( feature_test_macros(7)): getpgid(): _XOPEN_SOURCE >= 500 || /* glibc 2.12: */ _POSIX_C_SOURCE >= 200809L setpgrp() (POSIX.1): _XOPEN_SOURCE >= 500 || /* Since glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE setpgrp() (BSD), getpgrp() (BSD): [These are available only before glibc 2.19] _BSD_SOURCE && ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE || _GNU_SOURCE || _SVID_SOURCE) (PGID) . POSIX.1 : getpgrp(void) PGID setpgid() PGID . setpgid() PGID pid pgid. pid . pgid PGID pid . setpgid() ( ) ( setsid(2) credentials(7)). pgid . POSIX.1 getpgrp() PGID . getpgid() PGID pid. pid . ( PGID getpgrp() POSIX.1 .) setpgrp() System V setpgid(0, 0). setpgrp() BSD pid pgid setpgid(pid, pgid) glibc 2.19 setpgrp() BSD setpgid() . getpgrp() BSD pid getpgid(pid) glibc 2.19 getpgrp() BSD getpgrp() POSIX.1 ( PGID ) getpgid() . setpgid() setpgrp() . -1 errno . getpgrp() POSIX.1 PGID . getpgid() getpgrp() BSD . -1 errno . EACCES execve(2) (setpgid() setpgrp()). EINVAL pgid 0 (setpgid() setpgrp()). EPERM (setpgid() setpgrp()). EPERM . (setpgid() setpgrp()). ESRCH getpgid(): pid . setpgid(): pid . getpgid() setpgid() getpgrp() ( ) POSIX.1-2024. setpgrp() getpgrp() ( ) . getpgid() setpgid() getpgrp() ( ) POSIX.1-2001. setpgrp() ( ) POSIX.1-2001. POSIX.1-2008. POSIX.1-2024. setpgrp() () getpgrp() ( ) 4.2BSD. fork(2) . PGID execve(2). . ( credentials(7).) . ( ) . ( SIGINT) . ( termios(3) .) read(2) read(2) SIGTTIN . tcgetpgrp(3) tcsetpgrp(3) / . setpgid() getpgrp() bash(1) . SIGHUP SIGCONT . ( credentials(7)). getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3), credentials(7) 3 . . : . 6.18 8 2026 setpgid(2)