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

php做网站导购模板wordpress的缓存错误页怎么删

php做网站导购模板,wordpress的缓存错误页怎么删,工商执照注册号查询网,最好的手机网站建设前言 本文将会向你介绍匿名管道的原理以及用法#xff0c;以及管道的使用存在的情况和管道的特性 文章重点 重点#xff1a;匿名管道的原理#xff0c;使用情况#xff0c;以及特性 进程间通信 进程间通信的本质#xff1a; 让不同的进程先看到同一份资源#xff0c…前言 本文将会向你介绍匿名管道的原理以及用法以及管道的使用存在的情况和管道的特性 文章重点 重点匿名管道的原理使用情况以及特性 进程间通信 进程间通信的本质 让不同的进程先看到同一份资源这个资源不能由AB进程提供但能够被进程申请资源通常都是由OS提供 进程间通信目的 数据传输一个进程需要将它的数据发送给另一个进程 资源共享多个进程之间共享同样的资源。 通知事件一个进程需要向另一个或一组进程发送消息通知它它们发生了某种事件如进程终止 时要通知父进程。 进程控制有些进程希望完全控制另一个进程的执行如Debug进程此时控制进程希望能够拦截另 一个进程的所有陷入和异常并能够及时知道它的状态改变 进程间通信分类 一、管道 匿名管道pipe 命名管道 二、System V IPC System V 消息队列 System V 共享内存 System V 信号量 三、POSIX IPC 消息队列 共享内存 信号量 互斥量 条件变量 读写锁 今天要介绍的就是进程间通信的其中一种形式管道——匿名管道 什么是管道 在刚学linux的时候在linux常见指令的那一讲我们介绍过 | 管道符。 Linux管道符“|”用于将一个命令的输出传递给另一个命令作为输入。基本用法如下 command1 | command2 什么是匿名管道 匿名管道是通过调用系统函数pipe()创建的不需要指定一个路径来标识管道。它只是一个临时的通道存在于内存中只能用于具有亲缘关系的进程之间通信后续使用fork函数来实现。 匿名管道的实现原理 首先要让不同的进程看到同一份资源通过fork函数创建子进程这样一来子进程就会拷贝父进程的文件描述符表再通过pipe创建匿名管道父子进程通过相同的文件描述符指向同一个文件意味着它们指向同一个页缓冲区再用系统调用接口write写入数据到管道read从管道中读取数据即可完成父子进程之间的通信 pipe函数的用法 头文件#include unistd.h 功能:创建一无名管道 原型 int pipe(int fd[2]); 参数 fd文件描述符数组,其中fd[0]表示读端, fd[1]表示写端 返回值:成功返回0失败返回错误代码 pipe函数的参数是一个输出型参数返回两个文件描述符。管道被创建时会需要使用两个文件描述符一个文件描述符用于向管道写数据一个文件描述符用于从管道读数据 首先通过pipe函数打开一个文件的读写端 通过fork函数子进程能够继承读写端 再进行适当的关闭读写端保留一个读一个写这样未来能形成单向通道 创建管道并通信 这里设计的是让子进程写入让父进程读取这样做的好处是当子进程退出时可以通过wait等待获取子进程的退出错误码 #include iostream #include cassert #include unistd.h #include string.h #include sys/types.h #include sys/wait.h #define MAX 100using namespace std; int main() {//创建管道int pipefd[2] {0};int n pipe(pipefd);//判断是否成功一般都会成功有确定预测的用assert不确定的用ifassert(n0);//防止在release模式下assert失效后续不会使用n会告警//void(n);cout pipefd[0]: pipefd[0] ,pipefd[1]: pipefd[1] endl;//创建子进程pid_t id fork();//判断是否创建失败if(id 0){perror(fork);return 1;}//子进程else if(id 0){close(pipefd[0]); //关闭读通道int cnt 10;while(cnt){char message[MAX];snprintf(message, sizeof(message), hello father, I am child, Mypid:%d, cnt: %d, getpid(), cnt);cnt--;//将字符串message写入到管道中write(pipefd[1], message, strlen(message));sleep(1); //让子进程写慢些// char c F;// write(pipefd[1], c, 1);// cnt;// cout cnt : writing... endl;}exit(0);}//父进程close(pipefd[1]); //关闭写通道//TODOchar buffer[MAX];while(true){sleep(1);//从文件描述符对应的管道里读取数据并将数据存储到buffer中size_t n read(pipefd[0], buffer, sizeof(buffer) - 1);if(n 0){buffer[n] 0;cout getpid() - child sends: buffer to me endl; }else if(n 0){ cout father return val(n): n endl;cout child quit, me too!!! endl;sleep(1);break;}} cout finish reading... endl;//写端已经退出读完后关闭读端close(pipefd[0]);pid_t rid waitpid(id, nullptr, 0);if(rid id){cout wait success endl;}return 0; }管道的四种情况 1、如果管道没有数据了读端必须等待直到有数据为止 写入一条数据后就让子进程进入休眠状态 现象读端不再打印读取数据等待子进程写入 2、正常情况如果管道被写满了那么写端必须等待直到有空间为止读端读走数据 让读端先睡一会让写端一次写一个字节 现象这里会将管道写满64KB然后就不再写入了 3、写端关闭读端一直读读端会读到read返回值为0表示读到文件结尾 让子进程写5条就退出 现象read返回值为0表示读完了 4、读端关闭读一次直接break然后关掉读端的文件描述符写端一直写写入就没有意义了写端直接挂掉了对于操作系统来说不会做消耗资源的事情直接杀掉写端进程通过向目标进程发送sigpipe13信号终止目标进程 直接在最后break 现象写端挂掉了 管道的五种特性 1、匿名管道可以允许具有血缘关系的进程之间进行进程间通信常用于父子兄弟爷孙都可以 毫不相关的进程是不能通过这种管道进行通信的是通过fork来通信的 2、匿名管道默认给读写端要提供同步机制没有管道的时候父子进程都向显示器打印你打你的我打我的有了管道读端就等待写端 3、匿名管道是面向字节流的写10次可以读一次全部读完也可以一条条读怎么write和怎么read无关 4、管道的生命周期是随进程的整个管道会被释放掉管道也是底层文件父子进程退出后管道没有人用了会被os回收 5、管道是单向通信的一种特殊情况 小结 今日的分享就到这里啦如果本文存在疏漏或错误的地方还请您能够指出
http://www.pierceye.com/news/420807/

相关文章:

  • 网站广告是文化事业建设费系统客户管理软件
  • 企业网站用个人备案佛山网站建设公司哪个性比价好些
  • 深圳龙华做网站公司网络平面设计包括哪些
  • 高清素材网站无水印我要找人做网站的主页
  • 手机网站 程序网站备案要关多久
  • 网站需要具备条件在线用代码做网站
  • 代码下载网站河北恒山建设集团网站
  • 网站设计应遵循的原则做企业网站有哪些好处
  • 网站不用域名解绑商务网站建设的一般流程是什么?
  • 企业网站的运营如何做秦皇岛网站制作与网站建设
  • 潍坊 营销型网站建设室内设计和装修设计
  • 滕州市东方建设工程事务有限公司网站房房网
  • php网站漂浮广告代码百度一下打开网页
  • 华为公司网站建设方案模板自己做网站的费用
  • 网站设计命名规范广州短视频内容营销平台
  • 天津专门做网站的公司成都市城乡建设局网站
  • 品牌网站升级wordpress 4.9中文
  • 网站搭建软件广告标识标牌制作公司
  • 做造价在哪个网站查价格微信小程序是什么语言开发的
  • 网站建设平台接单做电子商务平台网站需要多少钱
  • 甘肃网站seo技术厂家企业简介内容
  • 视觉中国设计网站做音乐网站
  • 金坛区建设工程质量监督网站西宁百姓网免费发布信息
  • 运维 网站开发网站如何引入流量
  • 网站建设泉州效率网络西安网站设计公司哪家好
  • 青羊建站报价网上能注册公司吗怎么注册
  • 免费网站虚拟主机整站seo技术搜索引擎优化
  • 青岛网站建设订做油画风网站
  • 网站备案名称的影响吗六安哪里有做推广网站
  • 网站建设策划书网站发布与推广长沙公司网站费用