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

12306网站 花了多少钱建设群辉 wordpress套件

12306网站 花了多少钱建设,群辉 wordpress套件,为企业开发网站,php网页设计实例代码目录 前言#xff1a; 进程等待是什么 为什么需要进程等待 进程等待都在做什么 前言#xff1a; 通过上文的学习#xff0c;我们了解了进程终止#xff0c;知道终止是在干什么#xff0c;终止的三种情况#xff0c;以及有了退出码#xff0c;错误码的概念#xff…目录 前言 进程等待是什么 为什么需要进程等待 进程等待都在做什么 前言 通过上文的学习我们了解了进程终止知道终止是在干什么终止的三种情况以及有了退出码错误码的概念对于错误码我们知道不同的人对于错误码有自己的一套体系对于退出码我们知道可以使用echo $?来查看并且知道了如果终止进程。 那么本文我们来学习进程等待我们从三个方面来看进程等待是什么为什么要等待等待是在做什么从以上几个方面相信同学对于Linux中的进程等待有更深层次的理解。 进程等待是什么 思考什么情况下会发生等待的情况 情况实例父进程创建了子进程父进程任务结束子进程还没有结束父进程需要等待子进程退出。这种情况就是等待。 那么不等待会引发的后果是什么呢 如果父进程不等待直接退出那么子进程会变成僵尸进程僵尸进程导致的问题有内存泄漏其中内存泄漏是一个很危险的问题所以进程一般情况下父进程都是要等待退出的。 拿bash再举一个例子如果我们执行的所有指令所有可执行文件bash都不回收那么内存就是一次性的我们的机器也用不了多久就会报废了。 所以我们得出结论 进程等待是父进程比子进程先结束自己的任务所以父进程为了 整个系统的稳定性需要等待子进程。 为什么需要进程等待 进程等待除了考虑内存泄漏引发的安全问题父进程还需要考虑获取子进程的退出信息这是一个可选的选项因为不是所有的子进程都需要父进程获取退出信息。 进程等待都在做什么 前面两点即便是没有学习过进程等待的都应该知道有那么回事今天的重点实际上是在等待子进程的时候父进程是在做什么。 那么为了介绍父进程等待的时候在做什么我们不妨从一个函数开始-waitpid 从man 2号手册我们可以看到waitpid的头文件是sys/types.h sys/wait.h其实到现在一个函数需要两个头文件我们也见怪不怪了比如fork函数除了types还需要的头文件是unistd这也可以说是一种学习的里程碑吧 那么参数方面一共有三个: pid_t waitpid(pid_t pid, int *wstatus, int options);一个pid一个是输出型参数一个是对应的选项。 三个参数的理解为pid就是父进程要等待的子进程的pid毕竟一个父进程可能创建多个子进程要等待谁呢得指定吧。第二个参数是输出型参数可能直接这么说我们不好理解看这段代码就知道了 int a 0; scanf(%d,a); scanf的参数就是输出型参数即不是给OS的是给用户看的。第三个参数就像ls -a -l -n这么多选项一样。 这里还有一个点pid的参数如果我们给-1会怎么样呢-等待的就是任意进程了。 对于返回值来说我们简单先理解为如果等待成功返回的就是子进程的pid否则就是返回-1 代码为 #include stdio.h #include sys/types.h #include unistd.h #include wait.h #include stdlib.hvoid ChildRun() {//int *p NULL;int cnt 5;while(cnt){printf(I am child process, pid: %d, ppid:%d, cnt: %d\n, getpid(), getppid(), cnt);sleep(1);cnt--;//*p 100;} }int main() { printf(I am father, pid: %d, ppid:%d\n, getpid(), getppid());pid_t id fork();if(id 0){// childChildRun();printf(child quit ...\n);exit(123);}sleep(7);// fahter//pid_t rid wait(NULL);int status 0;pid_t rid waitpid(id, status, 0);if(rid 0){printf(wait success, rid: %d\n, rid);}else{printf(wait failed !\n);}sleep(3);printf(father quit, status: %d, child quit code : %d, child quit signal: %d\n, status, (status8)0xFF, status 0x7F);return 0; }当然了对于waitpid我们应该先了解一下wait wait其实就一个输出型参数所以如果输出型参数设置为NULL就是代表不关心这个子进程也就没了所以我们了解了waitpid之后自然就了解了wait。waitpid的参数设置为-1也就和wait等效了。 对于正常来说子进程进入了一个函数通过cnt进行计时5秒之后子进程结束了变成了僵尸父进程还没有结束父进程sleep一过开始回收此时就回收成功 我们通过指令 while :; do ps -xaj | head -1 ps -xaj | grep main | grep -v grep; sleep 1;done就可以亲眼看到了进程从僵尸状态变成了正常状态了。 此时细心的同学发现了最后打印的时候打印了子进程的退出码以及一个信号码 那么因为这里都是正常退出的所以退出码我们自己设置的是123所以打印出来也是123至于有什么含义呢我们自己规定即可。对于信号码来说我们需要了解一个点 退出信息的本质是什么 退出信息本质上是一块有16bit位的空间0 - 7bit位代表的是信号8 - 15bit位代表的是退出码退出信息实际上等于退出码 信号码退出信息里面的core dump我们暂且不考虑我们需要知道退出码从哪里看 你看代码代码打印退出码打印信息码的时候我们是不是通过按位与操作获取了某个特定区域的bit位并且打印出来了。那个操作实际上就是代表的取退出码和取信号码。 那么你是否会觉得退出码和信号码为什么只需要这么多个 我们可以看 拿信号举例一共就那么多7个bit位还多了呢退出码同理可得即可。 那么这里我们注意一下11号信号是段错误我们如果让子进程发生越界访问 也就是这里让空指针修改一下 可以看到退出码为0可是我们知道如果发生了越界进程终止实际上是被信号所杀退出码实际上是没有用处的这里的信号码为11我们就知道了是OS给子进程发送了11号信号从而导致了子进程终止但是父进程正常等待是成功了的。 父进程等待的时候就一点事儿都不做吗 不完全是的父进程等待的时候分为两种等待一种是阻塞等待一种是非阻塞等待对于阻塞等待就像scanf输入数据之后需要等待键盘数据就绪这是一种阻塞而子进程本质也是软件父进程实际上就是等待该软件就绪也就是啥也不干就等着呗。 这是阻塞等待。 那么非阻塞等待就需要借助我们的WNOHANG也就是第三个参数。 此时是非阻塞等待那么父进程一般要做的就是边做自己的事通过循环每过一段时间就问子进程是否结束没有此时这个过程非阻塞等待 循环 非阻塞轮询。 至于等待的三种情况等待成功pid_t返回的值是大于00代表的是等待成功但是子进程正准备结束了 0代表的是等待失败。 那么如果子进程是个死循环父进程一直等待不了怎么办这就是OS的事儿了。 非阻塞呢就是将第三个参数设置为WNOHANG即可。 感谢阅读
http://www.hkea.cn/news/14336312/

相关文章:

  • 网站访问量免费下ppt课件的网站
  • 建外贸网站哪个好网站建设及推广好学习吗
  • ip开源网站FPGA可以做点什么营销型网站建设公司提供网站建设
  • 基础型网站套餐中国外包公司
  • wordpress 站点群网站开发语言哪一种好些
  • 网站建设目的定位构建自己最出色的wordpress主题
  • 小米手机官方网站免费的舆情网站不需下载
  • 购物网站app推广方案淘宝客网站做app
  • 网站查询域名如何提高wordpress后台的访问速度
  • 电商网站建设 问题与解决方案阜宁网站建设服务商
  • 百度新闻源网站有哪些qq群短链接生成
  • 关于推进公司网站开发的请示做淘宝客网站会犯法吗
  • 网站建设客户常见问题多媒体展厅公司
  • 柳州城乡建设管理局网站网络营销有哪些营销方式
  • 网站技术解决方案是什么红色系 网站
  • 电商设计网站有哪些功能下载网站模板
  • 如何做带后台的网站拼多多网站怎么做的
  • 网站备案下来以后怎么做网页南京软件网站建设公司
  • 用jsp做校园网站宜昌十堰网站建设哪家好
  • 不备案 网站 盈利网架公司有哪些公司
  • 如何把网站放到域名上wordpress加底部进度条
  • 有没有做装修中介的网站常州市金坛区网站建设
  • 视频网站建设的背景简介如何做市场营销推广
  • 织梦做的网站怎么添加关键词做网站建设网站制作
  • 济南建站公司注意事项做像58同城样的网站
  • 做网站 商标分类外贸网站做纸尿裤怎么样
  • 股票交易网站开发上海做网站推广公司
  • 网站建设 服务内容公司介绍网站怎么做
  • 中国联通网站备案及ip地址备案管理要求河北省电力建设第一工程公司网站
  • 哈德网站建设建设网站要注册公司吗