曲靖手机网站建设费用注册推广赚钱一个10元
2026/4/18 10:36:25 网站建设 项目流程
曲靖手机网站建设费用,注册推广赚钱一个10元,开发app定制公司,织梦学校网站模板上篇博客我们说过在这篇博客我们将改进我们上篇博客写的#xff0c;命名管道实现简易通信#xff0c;下面是改进之后的代码#xff0c;这里我不详细写出来#xff0c;希望大家可以凭借上节课的知识以及代码内容#xff0c;真正的自己理解并且复现一遍~~Makefile#xff1…上篇博客我们说过在这篇博客我们将改进我们上篇博客写的命名管道实现简易通信下面是改进之后的代码这里我不详细写出来希望大家可以凭借上节课的知识以及代码内容真正的自己理解并且复现一遍~~Makefile.PHONEY : all all : server client server : server.cc g server.cc -o server client : client.cc g client.cc -o client .PHONEY : clean clean : rm -f client serverserver.cc#include common.hpp int main() { NamedFifo fifo(PATH, FIFO_FILE); FifoOper server(PATH, FIFO_FILE); server.OpenForRead(); server.Read(); server.Close(); return 0; }client.cc#include common.hpp int main() { FifoOper client(PATH, FIFO_FILE); client.OpenForWrite(); client.Write(); client.Close(); return 0; }common.hpp#pragma once #include iostream #include string #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #define PATH . #define FIFO_FILE fifo class NamedFifo { public: NamedFifo(std::string path, std::string name) : _path(path) , _name(name) { umask(0); _fifoname _path / _name; int n mkfifo(_fifoname.c_str(), 0666); if (n -1) { std::cout mkfifo fail std::endl; } else { std::cout mkfifo success std::endl; } } ~NamedFifo() { int n unlink(_fifoname.c_str()); if (n -1) { std::cout ~fifo fail std::endl; } else { std::cout ~fifo success std::endl; } } private: std::string _path; std::string _name; std::string _fifoname; }; class FifoOper { public: FifoOper(std::string path, std::string name) : _path(path) , _name(name) , _fd(-1) { _fifoname _path / _name; } ~FifoOper() { std::cout ~FifoOper std::endl; } void OpenForRead() { _fd open(_fifoname.c_str(), O_RDONLY); if (_fd 0) { std::cout OpenForRead fail std::endl; return; } std::cout OpenForRead success std::endl; } void OpenForWrite() { _fd open(_fifoname.c_str(), O_WRONLY); if (_fd 0) { std::cout OpenForWrite fail std::endl; return; } std::cout OpenForWrite success std::endl; } void Read() { char buffer[1024]; while (true) { int number read(_fd, buffer, sizeof(buffer) - 1); if (number 0) { buffer[number] \0; std::cout client say : buffer std::endl; } else if (number 0) { std::cout client quit! server quit, too! std::endl; break; } else { std::cout Read error std::endl; break; } } } void Write() { std::string message; while (true) { std::cout please enter# ; std::getline(std::cin, message); write(_fd, message.c_str(), message.size()); } } void Close() { if (_fd 0) close(_fd); } private: std::string _path; std::string _name; std::string _fifoname; int _fd; };这就算有关管道通信的知识啦命名管道与匿名管道但是我们的通信之旅还没有完大家敬请期待后续内容啦~~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询