fork与wait的使用

来源:互联网 发布:软件测试脚本 编辑:程序博客网 时间:2024/06/08 16:52
<strong><span style="font-size: 24px;"></span></strong><pre name="code" class="cpp" style="font-size: 13.3333px;"><strong><span style="font-size: 24px;"><span style="color:#ff0000;">fork与wait的搭配使用</span></span></strong>
#include<stdio.h>#include<sys/types.h>#include<unistd.h>int main(void){int n=3;pid_t pid;while(n--){pid = fork();//创建子进程,子进程创建好之后,就跳出循环if(pid == 0){break;}}//父进程if(pid > 0){while(1){pid_t p  = wait(NULL);if(p == -1){printf("子进程死光了\n");break;}printf("over %d\n",p);}}//子进程else if(pid == 0){while(1){printf("子进程  %d\n",getpid());sleep(5);}}
//fork过程中出现错误else{perror("fork:");}return 0;}

<strong><span style="font-size:24px;color:#ff0000;"></span></strong>
<strong><span style="font-size:24px;color:#ff0000;"></span></strong>
<strong><span style="font-size:24px;color:#ff0000;"></span></strong>
<strong><span style="font-size:24px;color:#ff0000;"></span></strong>
<strong><span style="font-size:24px;color:#ff0000;">1.fork的使用讲解</span></strong>
<strong><span style="font-size:24px;color:#ff0000;"><span style="white-space:pre"></span>使用注意:</span><span style="font-size: 24px;">当调用fork时候,三次判断,可以形式上认为函数调用三次</span></strong>
<strong><span style="font-size:24px;color:#ff0000;"></span></strong>
<strong><span style="font-size:24px;color:#ff0000;"><span style="white-space:pre"></span>总体理解</span></strong>
<strong><span style="color:#ff0000;"></span></strong><pre name="code" class="cpp"><span style="font-size:24px; font-family: Arial, Helvetica, sans-serif;"><span style="font-size:24px;"><span style="color:#ff0000;"><span></span></span></span></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-size: 24px;"><span style="font-family: UKaiCN; font-size: 9pt;"></span></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"><span style="font-size: 9pt;"> </span><span style="font-size: 9pt; white-space: pre;"></span><span style="font-size:18px;"><span style="white-space: pre;"></span>1. fork调用一次返回两次,   </span></span><span style="font-size:18px;"></span><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;">父进程中返回子进程ID</span><span style="font-family: UKaiCN;">,   </span></span>
<span><span style="font-family: WenQuanYiZenHeiMono;">子进程中返回0</span></span>
<pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;"><span style="font-size:18px;"><span style="white-space: pre;"></span>  2. fork之后,进程就会被分成两支,父进程与子进程,分支之后,两个进程分道扬镳,</span></span></span>
<pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;"><span style="font-size:18px;"><span style="white-space: pre;"></span>但是都是从fork出位置开始执行</span></span></span>
<span style="font-weight: bold;"><span style="font-size:24px;"><span style="white-space:pre"><span style="font-family: WenQuanYiZenHeiMono; font-size: 7pt;"></span></span></span></span>
<strong><span style="font-size:24px;"><span style="white-space:pre"></span><span style="color:#ff0000;">原理理解</span></span></strong>
<strong><span style="color: rgb(255, 0, 0);"><span style="font-size: 14px; white-space: pre;"></span><span style="font-size:18px;">  </span></span><span style="color: rgb(255, 0, 0);"><span style="font-size:18px;"><span></span></span></span></strong><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"><span style="font-size:18px;">1.子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。</span></span>
<span style="font-size:18px;"><span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#ff0000;"><span></span></span></span></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"><span style="white-space:pre"></span>    </span>
<pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;"><span style="color:#ff0000;">3.读时共享,写时复制,</span></span></span>
<span style="font-size:18px;"></span><pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;"><span style="white-space:pre"></span>以下是图解,对于虚拟内存而言,0-3g是用户区域,</span></span>
<span style="font-size:18px;"><span style="font-family: Arial, Helvetica, sans-serif;"><span></span></span></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;"><span style="white-space: pre;"></span>3-4g是内核区域,不过这都是有物理内存映射而来,fork之后将物理内存上的数据,</span></span>
<span style="font-size:18px;"><span style="font-family: Arial, Helvetica, sans-serif;"><span></span></span></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;"><span style="white-space:pre"></span>再次映射到另一个虚拟内存上,但是注意</span></span>
<span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span><span style="font-family: WenQuanYiZenHeiMono;">只有在当某个数据再次使用的时候才</span></span>
<span style="font-size:18px;"><span style="font-family: Arial, Helvetica, sans-serif;"><span></span></span></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: UKaiCN;"></span><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: WenQuanYiZenHeiMono;"><span style="white-space: pre;"></span>会进行再次映射,这样可以提高效率</span>
<span style="font-weight: bold;"><span style="font-size:24px;"><span style="color:#ff0000;"><span style="white-space:pre"></span></span></span></span><pre name="code" class="cpp"><strong><span style="font-size:24px;"><span style="font-family: UKaiCN; font-size: 9pt;">                               <img src="data:image/png;base64,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" alt="" /></span></span></strong>
<strong><span style="font-size:24px;"><span style="white-space:pre"></span></span></strong><pre name="code" class="cpp"><strong><span style="font-size:24px;"><span style="white-space:pre"></span>fork原理</span><span style="font-size:24px;">图解</span></strong>
<strong><span style="font-size:24px;">                 <img src="data:image/png;base64,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" alt="" /></span></strong>
<strong><span style="font-size:24px;"><span style="white-space:pre"></span> fork函数的实现</span></strong>
<span style="font-weight: bold;"><span style="font-size:24px;"></span></span><pre name="code" class="cpp"><pre name="code" class="cpp" style="display: inline !important;"><span style="font-family: WenQuanYiZenHeiMono;"><span style="font-family: 宋体, Arial; line-height: 26px;"><span style="color:#ff0000;"><span style="font-size:14px;"></span><span style="font-size:24px;">fork出错可能有两种原因:</span></span></span><span style="font-size:18px;"></span></span>
<span style="font-family:WenQuanYiZenHeiMono;font-size:18px;"><span style="color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;">    1)当前的进程数已经达到了系统规定的上限,这时errno的值被设置为EAGAIN。</span><br style="word-wrap: break-word; color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;" /><span style="color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;">   <span></span> 2)系统内存不足,这时errno的值被设置为ENOMEM。</span></span>
<strong><span style="font-size:24px;"></span></strong>
<strong><span style="font-size:24px;"></span></strong>
<strong><span style="font-size:24px;"><span style="white-space:pre"></span>补充</span></strong>
<span style="color:#0000F0;word-wrap: break-word; font-family: 宋体, Arial;font-size:14px; line-height: 26px;"><span style="white-space:pre"></span>这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略</span><span style="color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;">。</span><br style="word-wrap: break-word; color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;" /><span style="color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;"> <span style="white-space:pre"></span>每个进程都有一个独特(互不相同)的进程标识符(process ID),可以通过getpid()函数获得,</span>
<span style="color: rgb(102, 102, 102); font-family: 宋体, Arial;font-size:14px; line-height: 26px;"><span style="white-space:pre"></span>还有一个记录父进程pid的变量,可以通过getppid()函数获得变量的值。</span>


                                             
0 0
原创粉丝点击