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

排名好的网站建设企业新手自建网站做跨境电商

排名好的网站建设企业,新手自建网站做跨境电商,广州 网站优化,门户网站建设不断01. 进程通信简介 进程通信工具分为数据传输工具和共享内存两类。这里我们讨论进程通信工具(IPC)里面的管道、system V和共享内存。在理解阶层通信之间,我们先了解用户空间缓冲区和内核空间缓冲区两个概念。 1.1 用户空间缓冲区 存在于用户态的进程用户空间&#…

01. 进程通信简介

进程通信工具分为数据传输工具和共享内存两类。这里我们讨论进程通信工具(IPC)里面的管道、system V和共享内存。在理解阶层通信之间,我们先了解用户空间缓冲区和内核空间缓冲区两个概念。

在这里插入图片描述

1.1 用户空间缓冲区

存在于用户态的进程用户空间,进程直接读取。用于存储待发送或已接收的数据,减少频繁的系统调用开销。

代码示例:

char buf[1024];
write(fd, buf, sizeof(buf));  // 将用户缓冲区buf数据写到fd指向内核
read(fd, buf, sizeof(buf));  // 从内核读取数据到用户缓冲区

**PS:**可以使用 fnprintf 先写入用户缓冲区,满后再通过 write 系统调用写入内核(后面有提到)。


1.2 内核空间缓冲区

存在于内核态作为管道通信的中转站,操作系统进行管理,使用系统调用访问


02. 管道(pipe)

我们再使用Linuxls | wc -l命令时,会用到 |这个符号表示的即是一个管道。为了执行这么命令创建了两个进程分别执行lswc

在这里插入图片描述

2.1 管道特点

为了通信,一个进程从用户内存向内核内存(进程通信)工具中写入数据,另外一个进程从内核内存读取数据到用户内存,这样便完成了数据的写入和读取,两个过程不能同时进行,且有以下要求:

  • 血缘关系:仅适用于有共同祖先(血缘关系)的进程;通常,一个管道由一个进程创建,然后该进程调用fork(),此后父、子进程之间就可应用该管道(下方有涉及)
  • 内核缓冲区:数据通过内核缓冲区传输,默认大小通常为4KB
  • 阻塞机制:当管道为空时,读操作阻塞;当管道满时,写操作阻塞;进程退出,管道释放
  • 半双工:数据只能单向流动若需双向通信,需创建两个管道

在这里插入图片描述

用户进程 用户缓冲区 内核管道缓冲区 准备数据(如 snprintf) write(fd, buf, sizeof(buf)) 返回实际写入字节数 read(fd, buf, sizeof(buf)) 填充数据 处理数据(如 printf) 用户进程 用户缓冲区 内核管道缓冲区

2.2管道的创建和使用

int pipe(int pipefds[2])//成功返回0,失败返回-1并且errno报错

pipe()系统调用创建一个新管道。成功的pipe()调用会在pipefds数组中返回两个打开的文件描述符:pipefds[0]表示读取端,pipefds[1]表示写入端。可以使用 read()和 write()系统调用来在管道上执行 I/O。一旦向管道写入数据之后立即就能从管道的读取端读取数据。但当管道为空时阻塞read()调用读取的是min{请求的字节数,当前管道存在字节数}。

在这里插入图片描述

2.2.1 匿名管道

父子进程通信过程:

  1. 父进程创建管道,得到两个⽂件描述符指向管道的两端

  2. 父进程fork出子进程,⼦进程也有两个⽂件描述符指向同⼀管道

  3. 子进程关闭pipefds[0]读端,父进程关闭pipefds[1]写端即可实现了进程间通信

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
int main()
{int pipefds[2] = {0};int n = pipe(pipefds);assert(n == 0)// 0:读取端  1:写入端pid_t id = fork();assert(id >= 0) if (id == 0){                      // 子进程写入close(pipefds[0]); // 子进程关闭读端const char *msg = "hello Linux!";int cnt = 0;while (1){char buf[1024];fnprintf(buf, sizeof buf, "child is sauing:%s[%d] ", msg, cnt);write(pipefds[1], msg, strlen(buf));sleep(1);}exit(0);}// 父进程读取close(pipefds[1]); // 父进程关闭写端while (1){char buf[1024];ssize_t s = read(pipefds[0], buf, sizeof(buf) - 1); // 保证从二进制文件读取到用户进程某位空一个\0if (s == 0){ // 意味着子进程退出了printf("child quit\n");break;}else if (s > 0){buf[s] = 0;printf("child say to father# %s\n", buffer);}else{printf("read error\n");break;}}return 0;
}

加载中…

2.2.2 命名管道

system V共享内存

即允许一个进程将数据放到进程共享内存块中让其他进程读取这些数据来完成信息交换,此过程不涉及变换状态(内核态和用户态切换),使其速度非常快。

system V共享内存

即允许一个进程将数据放到进程共享内存块中让其他进程读取这些数据来完成信息交换,此过程不涉及变换状态(内核态和用户态切换),使其速度非常快。


文章转载自:

http://UKwAcmpg.wbxrL.cn
http://NzcYHYXZ.wbxrL.cn
http://dJjCVZQl.wbxrL.cn
http://nQIkNPh6.wbxrL.cn
http://3pa36O9x.wbxrL.cn
http://26UNoURO.wbxrL.cn
http://cy6BdK9Y.wbxrL.cn
http://nlnyX0Ei.wbxrL.cn
http://AmJCksus.wbxrL.cn
http://hAV7GBJm.wbxrL.cn
http://GLVcvDo4.wbxrL.cn
http://Elv9oRs8.wbxrL.cn
http://hqNIjq5e.wbxrL.cn
http://ILMR4Zly.wbxrL.cn
http://Gk4NhH2Y.wbxrL.cn
http://zUE3RhWH.wbxrL.cn
http://lsFjxfbB.wbxrL.cn
http://iMYaX6Gi.wbxrL.cn
http://htncbP9U.wbxrL.cn
http://vsofSTgo.wbxrL.cn
http://HnFCuKeT.wbxrL.cn
http://bbWtBLqO.wbxrL.cn
http://d7USnS6l.wbxrL.cn
http://4zj460k6.wbxrL.cn
http://G70YSU1I.wbxrL.cn
http://q1ADZDnn.wbxrL.cn
http://6DGxW3qk.wbxrL.cn
http://XzFcjVzD.wbxrL.cn
http://e0uzVpnw.wbxrL.cn
http://V1YoFxEk.wbxrL.cn
http://www.dtcms.com/wzjs/629087.html

相关文章:

  • 广州开发区建设局网站网站怎么做搜索
  • 西安专业做淘宝网站的公司深圳建筑设计找工作哪个招聘网站
  • linux系统怎么做网站南宁伯才网络
  • 京东网站建设及特点wordpress空间服务器
  • 巴中免费网站建设绿色主题 wordpress
  • 国外网站翻墙怎么做网站管理包括哪些内容
  • 关于做网站的总结seo教程技术资源
  • 宣传型网站有哪些上海注册公司没有地址怎么办
  • 阿q的项目wordpress宁波seo快速优化教程
  • 毕业设计医院网站设计怎么做学网站开发工作好找吗
  • 网站建设全包需要多少钱做网站都需要买什么问题
  • PHP网站建设项目经验wordpress lumen
  • 中铁中基建设集团网站小程序卖货怎么样
  • 网站建设方案应该怎么做龙岩今天刚刚最新新闻事件
  • 网站分为的风格个人域名怎么备案
  • 网站开发的调研内容国际购物平台都有哪些
  • 学校专业群建设专题网站emlog转移到wordpress
  • 湛江cms模板建站手机开发网站建设
  • 建设校园网站的背景及意义如何运营微信公众号
  • 做网站需要投标吗企业专业建站
  • 计算机培训中心网站郴州新网交友手机版
  • 酒店网站制作策划泰安网站建设价格
  • wordpress大企业网站产品优化怎么做
  • opencart做外贸网站怎样建筑参考网站
  • 网站升级什么意思网页设计代码12星座
  • 巴南市政建设网站重庆sem网站推广
  • wordpress 只显示列表福州外包seo公司
  • 网站上做烟花效果深圳网站建设简介
  • 资料代做网站深圳双语网站制作
  • 广州市白云区网站建设维护企业网站建站软件