getpgrp
extern pid_t getpgrp(void);
tcsetpgrp(0, getpgrp());
who = who == 0 ? getpgrp() : who;
return result >= 0 ? result : getpgrp();
printf("process group: %d\n", (int)getpgrp());
pid = waitpid(getpgrp(), &childStatus, 0);
printf("waitpid(%ld, ...) returned %ld (%s)\n", getpgrp(), pid, strerror(errno));
printf("child 1 process group: %ld\n", getpgrp());
printf("main process group: %ld\n", getpgrp());
printf("parent pgid: %d\n", getpgrp());
printf("child pid: %d, pgid: %d\n", childPID, getpgrp());
printf("child pgid: %d\n", getpgrp());
printf("gchild pid: %d, pgid: %d\n", grandChildPID, getpgrp());
printf("gchild pid: %d, pgid: %d\n", grandChildPID, getpgrp());
printf("child pgid: %d\n", getpgrp());