当前位置: 首页 > news >正文

网站建设制作设计推广网络公司什么意思

网站建设制作设计推广,网络公司什么意思,效果好的网站建,济南君哲网站建设公司进程组#xff1a;一个或多个进程的集合#xff0c;进程组id是一个正整数。组长进程#xff1a;进程组id 进程id组长进程可以创建一个进程组#xff0c;创建该进程组的进程#xff0c;终止了#xff0c;只要进程组有一个进程存在#xff0c;进程组就存在#xff0c;与…进程组一个或多个进程的集合进程组id是一个正整数。组长进程进程组id 进程id组长进程可以创建一个进程组创建该进程组的进程终止了只要进程组有一个进程存在进程组就存在与组长进程是否终止无关。进程组生存期进程组创建到最后一个进程离开终止或转移到另一个进程组一个进程可以为自己或子进程设置进程组id作用子进程退出时不管父子进程同不同一个进程组都会发SIGCHLD信号给父进程当父子进程同进程组时父进程应捕捉SIGCHLD信号对子进程资源进程回收防止僵尸进程的产生当父子进程不同进程组时比如设置子进程成为了一个新的进程组这时候子进程退出系统也会正常回收子进程的资源不会产生僵尸进程的相关函数#include unistd.hint setpgid(pid_t pid, pid_t pgid); //pid 0, pgid 0,让当前进程成为一个进程组并且进程组id为当前进程的pidpid_t getpgid(pid_t pid); //pid 0,获取当前进程的进程组idpid_t getpgrp(void); /* POSIX.1 version */pid_t getpgrp(pid_t pid); /* BSD version */int setpgrp(void); /* System V version */int setpgrp(pid_t pid, pid_t pgid); /* BSD version */demo父子进程同一个进程组#include stdio.h #include unistd.h #include stdlib.h #include signal.h #include sys/types.h #include sys/wait.hvoid do_sigchld(int signo) {pid_t pid;int status;printf(signo %d\n, signo);while((pid waitpid(0, status, WNOHANG)) 0) // 0:跟调用进程同组的子进程WNOHANG不阻塞立即返回{if (WIFEXITED(status))printf(child %d exit status %d\n, pid, WEXITSTATUS(status));else if (WIFSIGNALED(status))printf(chid %d exit by signal %d\n, pid, WTERMSIG(status));} }int main(int argc, char *argv[]) {pid_t pid;//阻塞SIGCHLD信号sigset_t set;sigemptyset(set);sigaddset(set, SIGCHLD);sigprocmask(SIG_BLOCK, set, NULL);pid fork();if (pid 0){//in child//解除阻塞SIGCHLD信号sigprocmask(SIG_UNBLOCK, set, NULL);//进程组printf(child pid %d, process group id getpgid(0) %d\n, getpid(), getpgid(0));printf(child pid %d, process group id getpgid(getpid()) %d\n, getpid(), getpgid(getpid()));printf(child pid %d, process group id getpgrp() %d\n, getpid(), getpgrp());/*setpgid(0, 0); //pid 0, pgid 0,让当前进程成为一个进程组并且进程组id为当前进程的pidprintf(after setpgid(0, 0) child pid %d, process group id getpgid(0) %d\n, getpid(), getpgid(0));printf(after setpgid(0, 0) child pid %d, process group id getpgid(getpid()) %d\n, getpid(), getpgid(getpid()));printf(after setpgid(0, 0) child pid %d, process group id getpgrp() %d\n, getpid(), getpgrp());*/}else if (pid 0){//in parent//先捕捉SIGCHLD信号struct sigaction act;act.sa_handler do_sigchld;sigemptyset(act.sa_mask);act.sa_flags 0; //0:用sa_handler参数SA_SIGINFO:用sa_sigaction参数sigaction(SIGCHLD, act, NULL);//再解除阻塞SIGCHLD信号sigprocmask(SIG_UNBLOCK, set, NULL);//进程组printf(parent pid %d, process group id getpgid(0) %d\n, getpid(), getpgid(0));printf(parent pid %d, process group id getpgid(getpid()) %d\n, getpid(), getpgid(getpid()));printf(parent pid %d, process group id getpgrp() %d\n, getpid(), getpgrp());sleep(1); //为了观察子进程退出时父进程回收子进程资源}else{perror(fork);exit(1);}return 0; }子进程成为一个进程组时上面的代码加入如下代码后setpgid(0, 0); //pid 0, pgid 0,让当前进程成为一个进程组并且进程组id为当前进程的pid#include stdio.h #include unistd.h #include stdlib.h #include signal.h #include sys/types.h #include sys/wait.hvoid do_sigchld(int signo) {pid_t pid;int status;printf(signo %d\n, signo);while((pid waitpid(0, status, WNOHANG)) 0) // 0:跟调用进程同组的子进程WNOHANG不阻塞立即返回{if (WIFEXITED(status))printf(child %d exit status %d\n, pid, WEXITSTATUS(status));else if (WIFSIGNALED(status))printf(chid %d exit by signal %d\n, pid, WTERMSIG(status));} }int main(int argc, char *argv[]) {pid_t pid;//阻塞SIGCHLD信号sigset_t set;sigemptyset(set);sigaddset(set, SIGCHLD);sigprocmask(SIG_BLOCK, set, NULL);pid fork();if (pid 0){//in child//解除阻塞SIGCHLD信号sigprocmask(SIG_UNBLOCK, set, NULL);//进程组printf(child pid %d, process group id getpgid(0) %d\n, getpid(), getpgid(0));printf(child pid %d, process group id getpgid(getpid()) %d\n, getpid(), getpgid(getpid()));printf(child pid %d, process group id getpgrp() %d\n, getpid(), getpgrp());setpgid(0, 0); //pid 0, pgid 0,让当前进程成为一个进程组并且进程组id为当前进程的pidprintf(after setpgid(0, 0) child pid %d, process group id getpgid(0) %d\n, getpid(), getpgid(0));printf(after setpgid(0, 0) child pid %d, process group id getpgid(getpid()) %d\n, getpid(), getpgid(getpid()));printf(after setpgid(0, 0) child pid %d, process group id getpgrp() %d\n, getpid(), getpgrp());}else if (pid 0){//in parent//先捕捉SIGCHLD信号struct sigaction act;act.sa_handler do_sigchld;sigemptyset(act.sa_mask);act.sa_flags 0; //0:用sa_handler参数SA_SIGINFO:用sa_sigaction参数sigaction(SIGCHLD, act, NULL);//再解除阻塞SIGCHLD信号sigprocmask(SIG_UNBLOCK, set, NULL);//进程组printf(parent pid %d, process group id getpgid(0) %d\n, getpid(), getpgid(0));printf(parent pid %d, process group id getpgid(getpid()) %d\n, getpid(), getpgid(getpid()));printf(parent pid %d, process group id getpgrp() %d\n, getpid(), getpgrp());sleep(1); //为了观察子进程退出时父进程回收子进程资源}else{perror(fork);exit(1);}return 0; }
http://www.w-s-a.com/news/690136/

相关文章:

  • 任务发布网站建设苏州园区房价
  • 网站的认识知识付费做的最好的平台
  • 企业电子商务网站设计的原则深圳的网站建设公司怎么样
  • 个人网站趋向wordpress图片搬家
  • 做空压机网站的公司有哪些wordpress 外部链接
  • 网站建设管理成本估计小红书推广平台
  • 一级a做爰片免费观看网站焦作建设企业网站公司
  • 欧阳网站建设2022华为云营销季
  • 快速学做网站高水平的大连网站建设
  • 专业做房地产网站建设wordpress侧面小工具
  • 旅游网站开发的重要性wordpress添加广告插件
  • 关于网站建设管理工作的报告婚纱网站php
  • 东莞市建设培训中心网站那个网站可以看高速的建设情况
  • 网站开发工具安卓版专业小程序商城开发
  • 网站不备案影响收录吗深圳住房网站app
  • 交网站建设域名计入什么科目开发平台教程
  • 个人网站定制北京快速建站模板
  • 河南海华工程建设监理公司网站高端论坛网站建设
  • 网站建设网络推广方案图片编辑器免费
  • 如何用dw做网站设计设计头条
  • 网站建设基础及流程北京商场购物中心排名
  • 青州市城乡建设局网站自建网站步骤
  • wordpress文章延迟加载优化设计答案四年级上册语文
  • 做网站源码要给客户嘛怎么在运行打开wordpress
  • 北海住房和城乡建设局网站wordpress标题去掉私密
  • 织梦网站安装视频做网站都有那些步骤
  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网