1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 int main() {
6 pid_t pid;
7
8 if ((pid=fork())<0) {
9 printf("fork error!");
10 exit(1);
11 }else if (pid==0) {
12 printf("The child process PID is %d.\n",getpid());
13 printf("The Group ID of child is %d.\n",getpgid(0)); // 返回组id
14 sleep(5);
15 printf("The Group ID of child is changed to %d.\n",getpgid(0));
16 exit(0);
17 }
18
19 sleep(1);
20 setpgid(pid,pid); // 改变子进程的组id为子进程本身
21
22 sleep(5);
23 printf("The parent process PID is %d.\n",getpid());
24 printf("The parent of parent process PID is %d.\n",getppid());
25 printf("The Group ID of parent is %d.\n",getpgid(0));
26 setpgid(getpid(),getppid()); // 改变父进程的组id为父进程的父进程
27 printf("The Group ID of parent is changed to %d.\n",getpgid(0));
28
29 return 0;
30 }