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

如何自己创建购物网站做网站具体流程

如何自己创建购物网站,做网站具体流程,金湖县网站建设,太原建站培训一、前言 本文将介绍在unix系统中#xff0c;父进程如何获取子进程的终止状态。本文主要围绕如下函数展开#xff1a; 1.wait 2.waitpid 3.waitid 4.wait3、wait4 在讨论这些函数前#xff0c;先介绍一个进程从创建到释放子进程的过程。 二、子进程的创建以及终止 在unix…一、前言 本文将介绍在unix系统中父进程如何获取子进程的终止状态。本文主要围绕如下函数展开 1.wait 2.waitpid 3.waitid 4.wait3、wait4 在讨论这些函数前先介绍一个进程从创建到释放子进程的过程。 二、子进程的创建以及终止 在unix系统中一个进程可以通过fork()函数来创建一个新的进程。如果父进程先终止那么子进程就会成为孤儿进程然后被init进程收留成为init进程的子进程。如果子进程先终止那么内核就会向父进程发送一个SIGCHLD的信号父进程默认忽略该信号。如果子进程终止后父进程没有去获取子进程的终止状态那么子进程就会在内存保存一段信息成为僵死进程。 父进程通过wait族函数来获取子进程的终止状态。 三、wait族函数介绍 wait族函数的作用是获取子进程的终止状态。下面将详细介绍每个函数 3.1 wait #include sys/wait.h pid_t wait(int *status); 参数用于存储子进程的退出状态如果不关心状态可以传入NULL 返回值成功返回子进程的PID出错返回0或-1 调用wait函数会有如下三种情况 1.如果所有的子进程都在运行中则父进程阻塞 2.如果一个子进程已经终止正等待父进程获取其状态则返回该子进程的PID 3.如果没有任何子进程则立即报错返回 unix通过四个宏来获取子进程的退出状态如下 WIFEXITED(status)用于判断子进程是否正常退出。如果是则返回真。WEXITSTATUS(status)获取正常退出的子进程的返回值。WIFSIGNALED(status)判断子进程是否因信号而终止。如果是则返回真。WTERMSIG(status)获取导致子进程终止的信号号码WIFSTOPPED(status)检查子进程是否被停止。 3.2 waitpid waitpid的功能比wait更为丰富它能指定等待某个特定的子进程结束且能够选择是否阻塞。 #include sys/types.h #include sys/wait.h #include unistd.h pid_t waitpid(pid_t pid, int *status, int options); 参数 pid要等待的子进程的PID。如果是正数则等待对应的子进程如果是-1则等待任意子进程如果是0则等待与调用进程同组的任意子进程。 status用于存储子进程的退出状态 options控制函数行为选项比如WNOHANG非阻塞等待。 返回值成功的话返回被等待的子进程PID没有匹配的子进程返回0错误返回-1 3.3 waitid waitid的功能和waitpid类似只不过在传入参数上有些许差异。 #include sys/types.h #include sys/wait.h int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); 参入参数 idtype: 指定要等待的进程 ID 类型可以是以下值之一 P_PID: 等待指定进程的终止。 P_PGID: 等待指定进程组的终止。 P_ALL: 等待所有子进程的终止。 id: 取决于 idtype 的值。它可以是某个特定进程的ID或是某个进程组的 ID或是 0针对所有子进程。 infop: 是一个指向 siginfo_t结构体的指针用于接收有关终止子进程的状态信息。 options: 控制函数行为的选项使用方式类似于waitpid 返回值成功时返回0出错返回-1 ps需要注意的是WCONTINUE、WEXITED、WSTOPPED这三个参数之一必须在options中指定。 3.4 wait3、wait4 wait3和wait4和前面几个函数相比主要多了一个获取终止进程及其子进程所使用的系统资源的功能。 #include sys/types.h #include sys/wait.h #include sys/resource.h #include unistd.h pid_t wait3(int *status, int options, struct rusage *rusage); 参数 status用于返回子进程的退出状态 options控制调用的行为 rusage指向 struct rusage的指针用于获取子进程的资源使用情况 返回值成功返回被等待的子进程的PID失败返回-1 pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage); wait4与wait3相比就增加了可以选择等待特定的子进程 struct rusage数据结构的定义如下 #include sys/resource.h struct rusage { struct timeval ru_utime; // 用户 CPU 时间 struct timeval ru_stime; // 系统 CPU 时间 long ru_maxrss; // 最高常驻集大小以 KB 为单位 long ru_ixrss; // 增加的共享内存大小 long ru_idrss; // 增加的独占内存大小 long ru_isrss; // 增加的共享数据段大小 long ru_minflt; // 页面未命中数 long ru_majflt; // 页面错误数 long ru_nswap; // 交换区使用的次数 long ru_inblock; // 输入块数 long ru_oublock; // 输出块数 long ru_msgsnd; // 发送的消息数 long ru_msgrcv; // 接收的消息数 long ru_nsignals; // 发送的信号数 long ru_nvcsw; // 自愿上下文切换次数 long ru_nivcsw; // 非自愿上下文切换次数 }; 四、参考代码 wait函数的参考代码如下 /************************************************************************* File Name: wait_test.c Author: conbiao Created Time: 2024年09月25日 星期三 11时14分36秒************************************************************************//************************************************************************ HEADER**********************************************************************/ #include stdio.h #include sys/wait.h #include unistd.h #include sys/resource.h/************************************************************************ MACRO**********************************************************************/ #define WAIT3/************************************************************************ GLOBAL VARIABLE**********************************************************************//************************************************************************ FUNCTION DESCRIPTION**********************************************************************//*********************************************************************** * FUNCTION NAME:*********************************************************************** * * Summary: * * Params: * * Return: * ***********************************************************************//************************************************************************ MAIN**********************************************************************/ int main(int argc, char *argv[]) {int ret 0;pid_t pid;int status;pid_t p;pid fork();if(pid 0){printf(fork fail!\n);}else if(pid 0){printf(This is child process!\n); #ifdef SIGNAL_EXITint x 2 / 0; #endifsleep(2);}else{ #ifdef WAITif((p wait(status))! pid){printf(wait child error! pid: %d. p: %d \n,pid,p);}else{printf(This is father process,child process: %d\n,pid);} #endif#ifdef WAITPIDif((p waitpid(pid,status,WNOHANG)) pid){printf(This is father process,child process: %d\n,pid);}else{printf(p: %d\n,p);} #endif#ifdef WAITIDsiginfo_t info;int res waitid(P_PID,pid,info,WEXITED);if(!res){printf(This is father process,child process:%d\n,pid);}else{printf(waitid fail! res: %d\n,res);} #endif#ifdef WAIT3struct rusage rus;if(wait3(status, 0 ,rus) pid){printf(This is father process,pid: %d,systime: %ld.%06ld seconds\n,pid, \(long)rus.ru_stime.tv_sec, (long)rus.ru_stime.tv_usec);}else{printf(wait3 fail!\n);}#endifif(WIFEXITED(status)){printf(child process over nomally,exit code is: %d\n,WEXITSTATUS(status));}else if(WIFSIGNALED(status)){printf(child process over by receive signal,signal is: %d\n,WTERMSIG(status));}}return ret; }运行结果如下 (4-1) 参考资料 《UNIX环境高级编程第3版 (史蒂文斯 (W.Richard Stevens) 拉戈(StephenA.Rago))(Z-Library)》
http://www.hkea.cn/news/14412662/

相关文章:

  • 广东佛山如何制作网站公司wordpress文章字符插件
  • 电子商务网站如何建设找公司制作app多少钱
  • 网站开发需要考什么证重庆网领网站建设公司
  • 在线编辑ppt的网站网络营销公司排行榜
  • 做公司网站详细步骤大连建设集团招聘信息网站
  • 张家口网站建设zjktao北京网站设计 培训
  • 邹平做网站的公司重写Wordpress的js
  • 深圳英文网站建设千万别学建筑工程技术
  • 设计网站推广公司网页制作建立网站多少钱
  • 如何建设个人免费网站教程视频长沙做网站好的公司有哪些
  • 如何简单制作自己的网站中国软件100强企业
  • 如何做一份企业网站广告设计与制作流程
  • 南昌高端网站开发费用表昆明市住房和城乡建设局门户网站
  • 湖南营销推广网站多少费用服务公司口号
  • 江苏 网站 备案河南网络推广系统
  • 有什么可以接单做设计的网站科技馆
  • 简单 网站女人与狗做视频网站
  • 个人备案域名可以做企业网站吗国外h5制作网站
  • 品牌网站建设框架为什么我的网站在百度搜不到
  • wordpress解决google字体乐陵seo
  • 专业网站制作公司百度推广助手客户端
  • 返利网站开发一般要多少钱wordpress4.7.4伪静态
  • 获取网站访客qq号wordpress破解主题
  • 看男女做那个视频网站苏州建设培训中心 官网
  • 做移动网站首页软wordpress标签样式
  • 厦门好景科技做网站怎么做网页的超链接
  • 成都网站制作和建设建设银行的官方网站电脑版
  • 怎么做网站教程 建站视频建设网站赚的是什么钱
  • 太原网站推广只选中联传媒去掉wordpress文章最近编辑时间
  • 海东企业网站建设公司cms编码是什么