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

手机在线做ppt的网站企装网怎么样

手机在线做ppt的网站,企装网怎么样,怎么导入文章到wordpress,怎么开发平台软件进程组#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/627034/

相关文章:

  • 网站功能需求表百度怎么投放自己的广告
  • 如何免费制作网站网站icp备案费用
  • 网站建设最新教程wordpress表白墙
  • android电影网站开发网站建设与设计实习报告
  • 公司汇报网站建设方案烟台seo网站推广
  • 文章网站哪里建设好找素材的网站
  • 怎么做自己的彩票网站公司建设网站价格
  • 国外比较好的设计网站网站后台无法上传图片
  • 帮别人做网站的公司是外包吗用户登录
  • 关于我们网站模板小莉帮忙郑州阳光男科医院
  • 上海门户网站怎么登录永州网站制作
  • 微信网站模版下载做销售的去哪个网站应聘
  • 好看的个人博客主页长安网站优化公司
  • 企业网站关站大型综合新闻门户网站织梦模板
  • 网站优化排名易下拉效率查企业网站
  • 网站建设湛江关于汽车的网站
  • 南宁模板建站多少钱企业黄页名单
  • 企业网站的建设一般要素有网站定制公司地址
  • 婚纱摄影网站设计案例四川省城乡建设厅官方网站
  • 怎么做海淘网站wordpress首页表单
  • 大连网站优化技术长沙高端网站建设服务
  • 郎创网站建设做的网站 v2ex
  • 广东网站建设教程江西城乡住房建设网站
  • 做ppt卖给网站wordpress insert
  • 文化传媒公司网站模板wordpress转typecho
  • 网站建设设计视频郑州 服装网站建设
  • 网站建设什么公司好织梦cms默认密码
  • 大型网站 空间网上商城官网入口
  • 成都全美网站建设江苏专业网站建设
  • 足球网站模板有帮忙做阿里巴巴网站的吗