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

电子商务书店网站设计实验西安哪个公司可以做网站

电子商务书店网站设计实验,西安哪个公司可以做网站,了解互联网 网站,手工网站做蛋糕盒子进程等待必要性之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill -9 也无能为力&#…

进程等待必要性

之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。
另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill -9 也无能为力,因为谁也没有办法杀死一个已经死去的进程。最后,父进程派给子进程的任务完成的如何,我们需要知道。如,子进程运行完成,结果对还是不对,或者是否正常退出。父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息

进程等待的方法

通过man手册进程查看

man 2 wait

wait()函数

#include<sys/types.h>
#include<sys/wait.h>
pid_t wait(int*status);
返回值:成功返回被等待进程pid,失败返回-1。
参数:输出型参数,获取子进程退出状态,不关心则可以设置成为NULL

下面测试一下wait()函数

接下来观察下进程状态,首先运行

 while :; do ps axj | head -1 && ps ajx | grep mytest | grep -v grep; sleep 1; echo "----------------"; done

接下来执行程序

执行程序的同时查看进程状态

这样观察不到现象,代码改进一下

waitpid()函数

pid_ t waitpid(pid_t pid, int *status, int options);
返回值:当正常返回的时候waitpid返回收集到的子进程的进程ID;如果设置了选项WNOHANG,而调用中waitpid发现没有已退出的子进程可收集,则返回0;如果调用中出错,则返回-1,这时errno会被设置成相应的值以指示错误所在;
参数:pid:Pid=-1,等待任一个子进程。与wait等效。Pid>0.等待其进程ID与pid相等的子进程。status:WIFEXITED(status): 若为正常终止子进程返回的状态,则为真。(查看进程是否是正常退出)WEXITSTATUS(status): 若WIFEXITED非零,提取子进程退出码。(查看进程的退出码)options:WNOHANG: 若pid指定的子进程没有结束,则waitpid()函数返回0,不予以等待。若正常结束,则返回该子进程的ID。
1.如果子进程已经退出,调用wait/waitpid时,wait/waitpid会立即返回,并且释放资源,获得子进程退出信息。
2.如果在任意时刻调用wait/waitpid,子进程存在且正常运行,则进程可能阻塞。
3.如果不存在该子进程,则立即出错返回。

获取子进程status

wait和waitpid,都有一个status参数,该参数是一个输出型参数,由操作系统填充。
如果传递NULL,表示不关心子进程的退出状态信息。否则,操作系统会根据该参数,将子进程的退出信息反馈给父进程。
status不能简单的当作整形来看待,可以当作位图来看待,具体细节如下图(只研究status低16比特位):

下面是获取退出码

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{pid_t id = fork();if (id == 0){int cnt = 5;while (cnt){printf("我是子进程,我还活着呢,我还有%dS,pid:%d,ppid:%d\n", cnt--, getpid(), getppid());sleep(1);}exit(107);}// 父进程int status = 0;pid_t ret_id = waitpid(id, &status, 0);printf("我是父进程,等待子进程成功,pid:%d,ppid:%d,ret_id:%d,child exit code:%d\n", getpid(), getppid(), ret_id, (status >> 8) & 0xFF);return 0;
}

其中status>>8&0xff获得整型值

下面是获取异常信号码

获取异常信号status&0x7f得出整型值

退出码为0,我们制造一个异常,在查看异常信号

我们继续改下程序,使程序无限循环

死循环也可以杀掉进程。

父进程在等待子进程的时候,也可以做别的事情

具体代码实现

进程的阻塞等待方式

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>int main()
{pid_t pid;pid = fork();if (pid < 0){printf("%s fork error\n", __FUNCTION__);return 1;}else if (pid == 0){ // childprintf("child is run, pid is : %d\n", getpid());sleep(5);exit(257);}else{int status = 0;pid_t ret = waitpid(-1, &status, 0); // 阻塞式等待,等待5Sprintf("this is test for wait\n");if (WIFEXITED(status) && ret == pid){printf("wait child 5s success, child return code is :%d.\n", WEXITSTATUS(status));}else{printf("wait child failed, return.\n");return 1;}}return 0;
}

进程的非阻塞等待方式

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>int main()
{pid_t pid;pid = fork();if (pid < 0){printf("%s fork error\n", __FUNCTION__);return 1;}else if (pid == 0){ // childprintf("child is run, pid is : %d\n", getpid());sleep(5);exit(1);}else{int status = 0;pid_t ret = 0;do{ret = waitpid(-1, &status, WNOHANG); // 非阻塞式等待if (ret == 0){printf("child is running\n");}sleep(1);} while (ret == 0);if (WIFEXITED(status) && ret == pid){printf("wait child 5s success, child return code is :%d.\n", WEXITSTATUS(status));}else{printf("wait child failed, return.\n");return 1;}}return 0;
}

http://www.yayakq.cn/news/669523/

相关文章:

  • 国内最最早做虚拟货币的网站哪有做建筑设计的网站
  • 网站版权 技术支持微信小程序
  • 深圳动力网站设计公司汽车网站开发流程
  • 网站建设开题报告数据库建立广告推销
  • wordpress 中文建站三亚网站建设报价
  • 微信网站建设哪家好海宁网站建设
  • 长沙网站推广系统济南网络品牌推广
  • 网站发展历程wordpress 用户注册
  • 招聘美容师在哪个网站做招聘最有效成都微信开发小程序
  • 怎么做口子推广网站重庆忠县网站建设公司哪里有
  • 网站前端页面设计网站推广找客户
  • 有什么做数学题的网站网站怎么写容易获得关键词排名
  • 北京大兴网站建设首选公司福田蒙派克柴油版7座
  • 网站建设推广优化手机类网站设计
  • 到底建手机网站还是电脑网站优惠劵精选网站怎么做
  • 网站建设公司薪资网站设置首页连接分类页的视频教程
  • 网站建设与管理维护说课做网站的步骤视频
  • 电商网站项目建设wordpress充值会员
  • 青岛制作网站软件加强健康养老网站建设
  • 可以自己做网站优化吗免费制作的企业网站
  • 二级a做爰片免费网站做高仿网站
  • 免费房地产网站模板wdlinux wordpress
  • 中企动力初期做的网站杭州的电商网站建设
  • 成都淮州新城建设投资有限公司网站网站开发公司怎么建服务器
  • html5开发的网站用图片做简单网站
  • 邯郸景区网站制作怎样选择高性价比的建站公司
  • 益阳网站开发公司什么软件可以做企业网站
  • 网站建设的软件平台营销型网站工程
  • 电子商务网站建设与管理课程论文做网站合同模板
  • 网站建设的针对对象智慧城市