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

专业制作网站 地摊网站怎么开发

专业制作网站 地摊,网站怎么开发,网站空间域名免费,移动网站开发视频怎样嵌入个人主页:敲上瘾-CSDN博客 匿名管道:进程池的制作(linux进程间通信,匿名管道... ...)-CSDN博客 一、命名管道的使用 1.创建命名管道 1.1.在命令行中: 创建: mkfifo 管道名 删除&#xff1a…

个人主页:敲上瘾-CSDN博客

匿名管道:进程池的制作(linux进程间通信,匿名管道... ...)-CSDN博客

一、命名管道的使用

1.创建命名管道

1.1.在命令行中:

创建:

mkfifo 管道名

删除:

rm -rf 管道名

或者:

unlink 管道名

1.2.在程序中

创建:

声明如下:

#include <sys/types.h>
#include <sys/stat.h>int mkfifo(const char *pathname, mode_t mode);
  • 返回值:成功:返回0。失败:返回-1,并设置 erron 以指示错误类型。
  • 参数1:指向一个以空字符结尾的字符串,表示要创建的命名管道的路径。
  • 参数2:指定文件的权限位(mode bits),类似于 open 函数中的权限参数。

销毁:

#include <unistd.h>int unlink(const char *pathname);
  • 返回值:如果成功删除文件,返回0,如果失败返回-1,并设置全局变量errno以指示具体的错误类型。
  • 参数1:指向一个以空字符结尾的字符串,表示要创建的命名管道的路径。

示例:

mkfifo("./filename",0666);//创建
unlink("./filename");//销毁

2.使用命名管道

当创建好管道后,进程通信就是简单的文件读写,如下:

把文件server.cc生成的程序作为读端

#include<iostream>
#include<sys/types.h>
#include<sys/stat.h>
#include<cstdio>
#include<fcntl.h>
#include<unistd.h>
using namespace std;
int main()
{int f = mkfifo("./file",0666);int r_fd = open("file",O_RDONLY);char buf[1024];while(true){int n = read(r_fd,buf,sizeof(buf)-1);if(n > 0){buf[n]='\0';printf("Client say# %s\n",buf);}else if(n == 0) break;else return 1;}close(r_fd);unlink("file");return 0;
}

:对于管道的创建与销毁在其中一端进行就行。

假设把文件client.cc生成的程序作为写端 

#include<iostream>
#include<sys/types.h>
#include<sys/stat.h>
#include<cstdio>
#include<fcntl.h>
#include<unistd.h>
using namespace std;
int main()
{int w_fd = open("file",O_WRONLY);while(true){string message;cout<<"Please enter: ";getline(cin,message);write(w_fd,message.c_str(),message.size());}close(w_fd);return 0;
}

        注意:该文侧重点在于讲解对命名管道的使用,所以以上代码中省略了对调用函数成功与否的判断,在实际开发中需要加以判断。 

效果如下:

二、命名管道与匿名管道的区别

1.创建上

  • 匿名管道是在程序中使用pipe进行创建并打开的。
  • 命名管道可以在程序中使用mkfifo命令创建,也可以在程序中使用mkfifo函数创建。然后需要用open打开。

2.使用范围

  • 匿名管道只能用于父子进程之间。
  • 命名管道可用于任意进程之间。

三、管道的特性

注1:管道的四种特性和四种通信情况,对于匿名管道和命名管道都是一样的。

注2:管道的生命周期随进程,本质是内核中的缓冲区,命名管道文件只是标识,用于让多个进程找到同一块缓冲区,删除后,之前已经打开管道的进程依然可以通信

1.管道的五种特性

  1. 管道文件,自带同步机制。如上代码示例,如果写端和读端执行速度不一样,快的一端会迁就于慢的一端,最后实现同步。
  2. 管道是面向字节流的。怎么读与怎么写并没有联系,比如写入“hello world”,但可能读到“hel”,这取决于你要读多少字节。
  3. 管道是单向通信的。也就是a(表示进程)写的时候b读。b写的时候a在读。而不是既在写同时也在读。
  4. 管道(文件)的生命周期是随进程的。进程结束管道也随之销毁。

2.管道的四种通信情况

  1. 写慢,读快 --- 读端就要阻塞(等待写端写入)。
  2. 写快,读慢 --- 到管道容量满了后,写端就要阻塞(等待读端读取数据,然后就可以覆盖式地继续往管道写入)。
  3. 写关闭,读继续 --- read就会返回0,表示文件结尾。
  4. 写继续,读关闭 --- 写端不再有意义,系统会杀掉写端进程。

非常感谢您能耐心读完这篇文章。倘若您从中有所收获,还望多多支持呀!

74c0781738354c71be3d62e05688fecc.png

http://www.dtcms.com/wzjs/397171.html

相关文章:

  • 山西运城网站建设百度广告销售
  • 网站开发程序都有什么流量平台排名
  • 美国网站空间百度一下你就知道百度官网
  • 自己怎么建个网站网站域名查询系统
  • 网站可以做多少优化关键词seo网站建设公司
  • 安徽建筑大学城市建设学院网站关键词排名查询工具有哪些
  • 网站建设硬件预算新浪网今日乌鲁木齐新闻
  • 党风廉政建设社会评价工作网站深圳网络优化seo
  • 做手机网站需要多少钱灰色行业推广
  • 珠宝wordpress主题外贸网站如何推广优化
  • 台州网站开发公司优化百度seo
  • 唐山建设网站公司信息流优化师面试常见问题
  • 长沙有哪些网站建设公司做个网站需要多少钱
  • 做网站需要写配置文件吗整合营销传播工具有哪些
  • 开发网站类型软文推广什么意思
  • 上海健康证查询网址怎么优化自己公司的网站
  • 专业从事成都网站建设百度一下手机版
  • 男同志网站建设网站域名查询
  • 手机网站横幅制作模板营销模式方案
  • 广州 网站制网站搭建步骤
  • 上海高端网站建设公司常用的网络营销工具有哪些
  • 成都装修网站建设多少钱小红书推广渠道
  • 天长市做网站南昌seo搜索优化
  • 自己做视频网站的流程怎么做线上推广
  • 网站建站报告2000字seo优化团队
  • 邢台做网站哪家好360网站收录提交入口
  • 新农村建设官方网站跨境电商有哪些平台
  • 电子商务网站建设评估工具有哪些网络推广经验
  • 网站怎么做海外推广方案朝阳网站seo
  • 免费网站怎么建seo快速排名优化公司