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

网站建设项目方案ppt广州建站模板平台

网站建设项目方案ppt,广州建站模板平台,微信公众号创建需要多少钱,做网站需要什么配置服务器管道(pipe)是一个我们在学习Linux命令行的时候就会引入的一个很重要的概念。管道是UNIX环境中历史最悠久的进程间通信方式#xff0c;从本质上说#xff0c;管道也是一种文件#xff0c;也是遵循UNIX的“一切皆文件”的原则设计的。虽然实现形态上是文件#xff0c;但是管道…管道(pipe)是一个我们在学习Linux命令行的时候就会引入的一个很重要的概念。管道是UNIX环境中历史最悠久的进程间通信方式从本质上说管道也是一种文件也是遵循UNIX的“一切皆文件”的原则设计的。虽然实现形态上是文件但是管道本身并不占用磁盘或者其他外部存储的空间。在Linux的实现上它占用的是内存空间。所以Linux管道实际上就是一个操作方式为文件的内存缓冲区。一、Linux管道分两种类型匿名管道和命名管道也叫做有名或无名管道匿名管道最常见的形态就是我们在shell操作中最常用的”|”。它的特点是只能在父子进程中使用父进程在产生子进程前必须打开一个管道文件然后fork产生子进程这样子进程通过拷贝父进程的进程地址空间获得同一个管道文件的描述符以达到使用同一个管道通信的目的。此时除了父子进程外没人知道这个管道文件的描述符所以通过这个管道中的信息无法传递给其他进程。这保证了传输数据的安全性当然也降低了管道了通用性于是系统还提供了命名管道。二、Linux管道的实现机制在Linux中管道是一种使用非常频繁的通信机制。从本质上说管道也是一种文件但它又和一般的文件有所不同管道可以克服使用文件进行通信的两个问题1.限制管道的大小。实际上管道是一个固定大小的缓冲区。在Linux中该缓冲区的大小为1页即4K字节使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题比如在写管道时可能变满当这种情况发生时随后对管道的write()调用将默认地被阻塞等待某些数据被读取以便腾出足够的空间供write()调用写。2.读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时管道变空。当这种情况发生时一个随后的read()调用将默认地被阻塞等待某些数据被写入这解决了read()调用返回文件结束的问题。注意从管道读数据是一次性操作数据一旦被读它就从管道中被抛弃释放空间以便写更多的数据。三、linux管道的结构在 Linux 中管道的实现并没有使用专门的数据结构而是借助了文件系统的file结构和VFS的索引节点inode。通过将两个 file 结构指向同一个临时的 VFS 索引节点而这个 VFS 索引节点又指向一个物理页面而实现的。四、linux管道的代码示例管道由pipe函数创建#include int pipe(int filedes[2]);调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信它有一个读端一个写端然后通过filedes参数传出给用户程序两个文件描述符filedes[0]指向管道的读端filedes[1]指向管道的写端。向这个文件读写数据其实是在读写内核缓冲区。pipe函数调用成功返回0调用失败返回-1。子进程通过管道向父进程发送数据。限制在父子进程间通信。#include#include#include#include#include#includeint main () {char* msg;char buf[20];int pipe_filed[2];pipe(pipe_filed);pid_t pid fork();if(pid 0) {perror(fork errir.);exit(1);} else if (0 pid) {msg child;write(pipe_filed[1], msg, sizeof(msg));printf(child process send: %s\n, msg);} else {read(pipe_filed[0], buf, sizeof(buf));printf(parent process recv: %s\n, buf);int status;wait(status);if (WIFEXITED(status))printf(Child exited with code %d\n, WEXITSTATUS(status));else if (WIFSIGNALED(status))printf(Child terminated abnormally, signal %d\n, WTERMSIG(status));}return 0;}两个进程通过一个管道只能实现单向通信比如上面的例子子进程写父进程读如果有时候也需要父进程写子进程读就必须另开一个管道。管道其实是一个在内核内存中维护的缓冲器这个缓冲器的存储能力是有限的。管道被填满之后后续向管道写入操作都会被堵塞直到有读取进程读取管道中的数据。至于如何从Linux管道中读取数据可以在本站的Linux教程中找到详细的解答。
http://www.zqtcl.cn/news/837041/

相关文章:

  • 房产部门成立网站免费seo推广软件
  • python做网站好处百度指数分析报告
  • 网站建设挣钱班级介绍网页制作模板
  • 工作室 网站建设app公司
  • 自己做的网站怎么在百度搜索到网页制作论文3000字
  • 如何网站托管中国跨境电商平台有多少
  • 手机p2p网站做平面设计兼职的网站有哪些
  • 贵金属网站建设唐山网站制作工具
  • 网站入门成都网站制作沈阳
  • 接做网站单子的网站做网站要会那些ps
  • 做盗市相关网站wordpress速度优化简书
  • 贵阳手机网站建设公司国内永久免费云服务器
  • 温州做网站定制哪家网络推广公司好
  • 招聘网站怎么做线下活动网站后台管理系统怎么开发
  • 西湖区外贸网站建设商梦建站
  • 网站首页设计注意斗蟋蟀网站建设
  • 石家庄网站建设远策科技网站建设公司人员配备
  • 手机怎么建网站链接专门做鞋子的网站吗
  • 网站建设设计作品怎么写网站建设 网站内容 采集
  • 自己做网站nas如何做网站大图片
  • 网站优化定做嘉兴模板建站代理
  • 南宁做网站比较好的公司有哪些花乡科技园区网站建设
  • 网站注册平台怎么注册申请空间 建立网站吗
  • 汕头住房与城乡建设网站做网站视频 上传到哪儿
  • 东莞网站关键词优化福建个人网站备案
  • 国外获奖flash网站泉州网站制作专业
  • 万网域名注册后如何做网站教学上海app开发和制作公司
  • 恩施网站建设公司个人网站怎么制作成图片
  • 泸州高端网站建设公司上海企业网站
  • wordpress 建站 知乎济南全包圆装修400电话