佛山seo整站优化,wordpress编程视频教程,昆山网站开发,网站开发软件科技公司一、实验1
题目#xff1a;利用进程扇完成一个小实验。该进程扇有 1 个父进程和 3 个子进程#xff0c;我们希望达到图 1 中的效果#xff0c;即将进程 0 (父进程)和进程 1 设置成一组#xff0c;假设为组 1#xff0c;将进程 2 和 进程 3 设置成另一个组#xff0c;假设…一、实验1
题目利用进程扇完成一个小实验。该进程扇有 1 个父进程和 3 个子进程我们希望达到图 1 中的效果即将进程 0 (父进程)和进程 1 设置成一组假设为组 1将进程 2 和 进程 3 设置成另一个组假设为组 2. 另外我们希望进程 0 和进程 2 分别是这两个组的组长。 测试代码
#include unistd.h
#include stdlib.h
#include stdio.h
#include sys/wait.hint main(void)
{setpgid(getpid(), getpid());pid_t group1 getpgid(getpid());pid_t group2;int i 0;for(; i 3; i){pid_t pid fork();if(pid 0){perror(fork error);exit(1);}else if(pid 0){// parent processif(i 0)setpgid(pid, group1);if(i 1){setpgid(pid, pid);group2 getpgid(pid);}if(i 2)setpgid(pid, group2);}else{// child processif(i 0)setpgid(getpid(), group1);if(i 1){setpgid(getpid(), getpid());group2 getpgid(getpid());}if(i 2)setpgid(getpid(), group2);break;}}printf(pid:%d, ppid:%d, pgid:%d\n, getpid(), getppid(), getpgid(getpid()));for(int i 0; i 3; i)wait(0);return 0;
}
输出结果 二、实验2
题目利用进程扇完成一个小实验。该进程扇有 1 个父进程和 3 个子进程我们希望达到图 1 中的效果即将进程 0 (父进程)和进程 1 设置成一组假设为组 1将进程 2 和 进程 3 设置成另一个组假设为组 2. 另外我们希望进程 0 和进程 2 分别是这两个组的组长。 测试代码
#include unistd.h
#include string.h
#include stdio.h
#include stdlib.h
#include errno.hint main()
{int pid, i;int group1, group2;setpgid(getpid(), getpid());group1 getpgid(getpid());for (i 0; i 3; i) {pid fork();if (pid 0) {// fatherif (i 0) {setpgid(pid, pid);group2 getpgid(pid);} else if (i 1) {setpgid(pid, group1);} else if (i 2) {setpgid(pid, group2);} break;} else if (pid 0) {// childif (i 0) {setpgid(getpid(), getpid());group2 getpgid(getpid());} else if (i 1) {setpgid(getpid(), group1);} else if (i 2) {setpgid(getpid(), group2);} } else if (pid 0) {perror(fork);return -1; } }printf(进程 %d, pid: %d - ppid: %d, pgid: [%d]\n, i, getpid(), getppid(), getpgid(getpid()));while(1) sleep(1);return 0;
}
输出结果 三、参考资料
1. 65-进程组实验一
2. 66-进程组实验二
3. 进程组和组长进程