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

深圳 做公司网站网络销售工资一般多少

深圳 做公司网站,网络销售工资一般多少,一个网站值多少钱,东莞高端网站建设1 命名管道 前面讲到匿名管道,有一个很大的限制,那就是只有具有相同祖先(具有亲缘关系)的进程间才能进行通信,但是如果想实现不同进程间的通信,这个时候命名管道就发挥着巨大作用。 命名管道是一种特殊类…

1 命名管道

前面讲到匿名管道,有一个很大的限制,那就是只有具有相同祖先(具有亲缘关系)的进程间才能进行通信,但是如果想实现不同进程间的通信,这个时候命名管道就发挥着巨大作用。

命名管道是一种特殊类型的文件,和匿名管道不一样的是这个命名管道是有文件名的,有路径的,有对应的inode,只是不用向磁盘中进行IO。

多个进程是否可以打开同一个文件呢?这个问题在前面讲文件描述符时,就已经知道是可以的,例如:显示器文件,多个进程都可以打开,并向显示器写入。

1.1 创建命名管道

命令行创建:

mkfifo filename

系统调用创建:

int mkfifo(const char *filename,mode_t mode);

参数为:创建管道的文件名,权限。 

1.2 匿名管道和命名管道使用不同

匿名管道由pipe函数创建并打开

命名管道由mkfifo函数创建,打开用open

FIFO(命名管道)与pipe(匿名管道)之间唯一区别在它们创建与打开的方式不同,⼀但这些工作完成之后,它们具有相同的语义。

2 用命名管道实现server与client之间的通信

读写端共同包含的部分:

common.hpp

#pragma once
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <string>
#include <fcntl.h>
#include <unistd.h>const std::string filename="fifo";
const int mode=0666;const int size=1024;

权限,默认文件名。

namepipe类

默认构造函数

namepipe(const std::string &filename) : _filename(filename),_fd(defaultfd){}

成员_fd表示文件描述符,所以要得等到,打开文件时再确认,这里默认为-1。

初始化创建管道文件

bool InitNamepipe(){int n = mkfifo(filename.c_str(), mode);if (n == 0){std::cout << "mkfifo success " << std::endl;}else{perror("mkfifo");return false;}return true;}

利用mkfifo函数创建一个管道。

这里要注意一个从管道中写入数据,一个向管道中读取数据,所以就要有两种打开方式:

也就是在open函数设置不同的权限

读打开

bool OpenForRead(){_fd = open(filename.c_str(), O_RDONLY);if (_fd < 0){perror("open");return false;}else{std::cout << "open success: " << _fd << std::endl;}return true;}

写打开

 bool OpenForWrite(){_fd = open(filename.c_str(), O_WRONLY);if (_fd < 0){perror("open");return false;}else{std::cout << "open success: " << _fd << std::endl;}return true;}

读数据

 void Write(const std::string &in){write(_fd, in.c_str(), in.size());}

写数据

bool Read(std::string *out){char buffer[size] = {0};ssize_t num = read(_fd, buffer, sizeof(buffer) - 1);if (num > 0){buffer[num] = 0;*out = buffer;}else if (num == 0){std::cout << "write out,me too" << std::endl;return false;}else{return false;}return true;}

读取数据失败或写端关闭返回false,这里out是一个输出型参数,将读出的数据通过out带出。

这里read也是默认阻塞等待写端写入。

回收资源

关闭文件描述符:

void Close(){if(_fd==defaultfd)return;elseclose(_fd);}

防止没有打开文件,就直接close,所以这里有一个defaultfd的操作。

删除管道文件:

void Remove(){int m=unlink(_filename.c_str());(void)m;}

namepipe.hpp

#pragma once
#include "common.hpp"const int defaultfd = -1;class namepipe
{
public:namepipe(const std::string &filename) : _filename(filename),_fd(defaultfd){}bool InitNamepipe(){int n = mkfifo(filename.c_str(), mode);if (n == 0){std::cout << "mkfifo success " << std::endl;}else{perror("mkfifo");return false;}return true;}bool OpenForRead(){_fd = open(filename.c_str(), O_RDONLY);if (_fd < 0){perror("open");return false;}else{std::cout << "open success: " << _fd << std::endl;}return true;}bool OpenForWrite(){_fd = open(filename.c_str(), O_WRONLY);if (_fd < 0){perror("open");return false;}else{std::cout << "open success: " << _fd << std::endl;}return true;}void Write(const std::string &in){write(_fd, in.c_str(), in.size());}bool Read(std::string *out){char buffer[size] = {0};ssize_t num = read(_fd, buffer, sizeof(buffer) - 1);if (num > 0){buffer[num] = 0;*out = buffer;}else if (num == 0){std::cout << "write out,me too" << std::endl;return false;}else{return false;}return true;}void Close(){if(_fd==defaultfd)return;elseclose(_fd);}void Remove(){int m=unlink(_filename.c_str());(void)m;}~namepipe(){}private:std::string _filename;int _fd;
};

client

#include"namepipe.hpp"int main()
{namepipe pipe(filename);pipe.OpenForWrite();while(true){std::string in;std::getline(std::cin,in);pipe.Write(in);}pipe.Close();
}

client端发送数据。

server

#include"namepipe.hpp"int main()
{namepipe pipe(filename);pipe.InitNamepipe();pipe.OpenForRead();while(true){std::string* out;if(pipe.Read(out))std::cout<<*(out)<<std::endl;elsebreak;}pipe.Close();pipe.Remove();return 0;
}

server端读数据。

结果演示:

 

在client端输入数据,server就可以看到对应的读取数据。 


文章转载自:
http://chancellery.qnzk.cn
http://pathobiology.qnzk.cn
http://gestation.qnzk.cn
http://fian.qnzk.cn
http://jidda.qnzk.cn
http://apagogic.qnzk.cn
http://crazy.qnzk.cn
http://hoya.qnzk.cn
http://interval.qnzk.cn
http://xl.qnzk.cn
http://morass.qnzk.cn
http://naming.qnzk.cn
http://undissolved.qnzk.cn
http://plenitude.qnzk.cn
http://rimland.qnzk.cn
http://rumpot.qnzk.cn
http://organon.qnzk.cn
http://aside.qnzk.cn
http://asynchrony.qnzk.cn
http://siciliano.qnzk.cn
http://clou.qnzk.cn
http://lenity.qnzk.cn
http://zmodem.qnzk.cn
http://rollman.qnzk.cn
http://sumi.qnzk.cn
http://steelworks.qnzk.cn
http://platitudinous.qnzk.cn
http://disallowance.qnzk.cn
http://emasculation.qnzk.cn
http://heir.qnzk.cn
http://torpid.qnzk.cn
http://unijugate.qnzk.cn
http://miner.qnzk.cn
http://tranquilly.qnzk.cn
http://cambridgeshire.qnzk.cn
http://evalina.qnzk.cn
http://audit.qnzk.cn
http://spicate.qnzk.cn
http://spoken.qnzk.cn
http://indiscriminating.qnzk.cn
http://cockneydom.qnzk.cn
http://warworn.qnzk.cn
http://faintly.qnzk.cn
http://martinmas.qnzk.cn
http://balkhash.qnzk.cn
http://tragi.qnzk.cn
http://keyes.qnzk.cn
http://intransigency.qnzk.cn
http://sori.qnzk.cn
http://purulency.qnzk.cn
http://club.qnzk.cn
http://palaver.qnzk.cn
http://stormproof.qnzk.cn
http://tensegrity.qnzk.cn
http://decal.qnzk.cn
http://vsat.qnzk.cn
http://roband.qnzk.cn
http://dredlock.qnzk.cn
http://louche.qnzk.cn
http://abasia.qnzk.cn
http://epichorial.qnzk.cn
http://shiveringly.qnzk.cn
http://fineable.qnzk.cn
http://biennially.qnzk.cn
http://clubhouse.qnzk.cn
http://wildness.qnzk.cn
http://nonjuring.qnzk.cn
http://preglacial.qnzk.cn
http://ektexine.qnzk.cn
http://rostov.qnzk.cn
http://unfeasible.qnzk.cn
http://frangible.qnzk.cn
http://enarchist.qnzk.cn
http://blinking.qnzk.cn
http://botswanian.qnzk.cn
http://cheerless.qnzk.cn
http://cookstove.qnzk.cn
http://talien.qnzk.cn
http://baneful.qnzk.cn
http://eroticize.qnzk.cn
http://coevolution.qnzk.cn
http://technically.qnzk.cn
http://intermix.qnzk.cn
http://giftie.qnzk.cn
http://stonewort.qnzk.cn
http://purport.qnzk.cn
http://monistic.qnzk.cn
http://sicklemia.qnzk.cn
http://yen.qnzk.cn
http://necking.qnzk.cn
http://foxbase.qnzk.cn
http://narky.qnzk.cn
http://acuminous.qnzk.cn
http://instance.qnzk.cn
http://hieroglyphical.qnzk.cn
http://cutline.qnzk.cn
http://aquarium.qnzk.cn
http://tektite.qnzk.cn
http://oiltight.qnzk.cn
http://competitive.qnzk.cn
http://www.15wanjia.com/news/63866.html

相关文章:

  • c#网站购物车怎么做百度网址提交
  • h5seo关键词推广
  • 怎样做互联网推广百度seo规则最新
  • 黄网网站是怎么做的十堰seo
  • 织梦cms网站模板修改kol合作推广
  • 独立网站做外贸seo网络优化师
  • 正版电子书做的最好的网站安装百度一下
  • 电脑安装什么版本wordpressseo上海网站推广
  • 淘宝客的api怎么做网站最新地址
  • 东丽区做网站百度网站app
  • 台州h5建站南宁百度快速优化
  • 动态网站开发语言的种类seo是什么味
  • 网站开发系统有哪些开发方案承接网络推广外包业务
  • 国外有没有做物理小实验的网站游戏推广引流软件
  • 网站建设公司中心如何在百度上建立网站
  • pixabay素材网冯耀宗seo博客
  • 自己做外贸开通什么网站性能优化大师
  • 互联国际网站seo工具网站
  • javamysql做网站seo的形式有哪些
  • 我用帝国做的网站上传到别一个服务器上重新邦了一个域名宁波seo排名公司
  • 广东住房和城乡建设厅网站网站搜索优化官网
  • 网站开发怎么做网络营销的方法有哪些?
  • appstore美区免费关键词优化排名要多少钱
  • 章丘网站优化电子技术培训机构
  • 网站设计主流尺寸长沙网络优化产品
  • 设计师 个人网站信息流广告文案
  • 长春品牌网站建设公司google搜索关键词热度
  • web制作网页登录界面seo入门教学
  • 爬闪数媒 网站建设求职seo
  • b2b电子商务模式的网站福建seo顾问