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

做视频网站版权怎么解决武汉网站seo服务

做视频网站版权怎么解决,武汉网站seo服务,怎么联系地推公司,辽宁沈阳又发现一例吗今天一、命名管道 1.1 进程通信的前提:先让不同进程看到同一份资源; 1.2 如何确保两个进程打开的是同一个文件:同路径下同一文件名; 1.3 命名管道:通过路径文件名确保这个份资源的唯一性; 1.4 接口&#xf…

一、命名管道

1.1 进程通信的前提:先让不同进程看到同一份资源;
1.2 如何确保两个进程打开的是同一个文件:同路径下同一文件名;
1.3 命名管道:通过路径+文件名确保这个份资源的唯一性;
1.4 接口:
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char* pathname, mode_t mode);
pathname-> 路径; mode -> 权限  int ->成功返回0,失败返回 -1
1.5 两个不相干的进程通过命名管道实现通信:
//comm.hpp
#pragma once
#define FILE_NAME "myfifo"
#define MODE 0666
#define SIZE 1024
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <fcntl.h>
//processA.cc
//进程A读取进程B写的内容
#include "comm.hpp"
int main()
{//创建管道文件int retmk=mkfifo(FILE_NAME,MODE);if(retmk<0){perror("mkfifo");exit(1);}//打开管道文件int fd=open(FILE_NAME,O_RDONLY);//因为A只做读取工作if(fd<0){perror("open");exit(3);}std::cout<<"process A open done!!"<<std::endl;//开始通信char buffer[SIZE]={0};while(true){ssize_t n=  read(fd,buffer,sizeof(buffer));if(n>0){buffer[n]='\0';//读到了把n位置写入'\0'打印结束标识符printf("%s\n",buffer);}else if(n==0){printf("写端关闭,读取到文件末尾!!\n");break;//退出}else break;//读取失败}//关闭文件close(fd);//删除管道文件int retlink=unlink(FILE_NAME);if(retlink==-1){perror("ulink");exit(2);}return 0;
}
//processB.cc
#include "comm.hpp"
int main()
{//打开文件int fd =open(FILE_NAME,O_WRONLY);//以写的方式打开if(fd<0){perror("open");exit(4);}//开始通信while(true){std::string line;getline(std::cin,line);//从键盘获取整行到linewrite(fd,line.c_str(),line.size());}//关闭文件close(fd);return 0;
}
//makefile
.PHONY:all
all:processA processB
processA:processA.ccg++ -o $@ $^ -std=c++11
processB:processB.ccg++ -o $@ $^ -std=c++11
.PHONY:clean
clean:rm -f processA processB

运行A:(A进程在等待读)

运行B:(B在等待键盘输入,且A打印了一句)

我在A进程代码中打开文件后写的一句:

说明:读取方等待写入方打开文件后才会自己打开,向后执行,如果写入方不打开文件,读取方会open阻塞了!!

接下来,在进程B中输入点信息再关闭看看:

进程A、B之间实现了通信,当写端关闭后B读到文件末尾返回值0退出循环;

二、加入日志

2.1日志一般需要的内容:

①日志时间;②日志内容;④文件名称和行号

③日志等级:日志等级一般有:

 Info :常规消息;

Debug:调试信息;

Warning : 报警信息 ;

Error :比较严重需要立即处理 ;

Fatal:致命信息;

2.2  实现简易的日志功能

例如:当程序运行发生错误时,这是一个Error消息,把错误信息的等级、发生时间、错误内容、错误码按照自己的需求打印出来(可以打印到屏幕或者某个文件,也可以根据日志等级把信息分类打印到不同的文件);

2.3 日志类的实现
//log.hpp
#pragma once
#include "comm.hpp"
#include <time.h>
#include <stdarg.h>
#include <cstring>
#define Info 1
#define Debug 2
#define Warning 3
#define Error 4
#define Fatal 5
#define SCREEN 1 //屏幕打印
#define ONEFILE 2  //打印某个文件
#define CLASSFILE 3  //分类打印
#define FILE_NAME "log.txt"
#define PATH "./log/"
class Log
{public:Log(){printmethod=SCREEN;//默认向屏幕打印path=PATH;}void Enable(int method){printmethod=method;}
std::string leveltoString(int level)
{switch(level){case 1:return "Info";case 2:return "Debug";case 3:return "Warning";case 4:return "Error";case 5:return "Fatal";default:return "None";}
}
void printOnefile(const std::string&filename,const std::string&logtxt)//向一个文件打印
{std::string Filename=path+filename;int fd=open(Filename.c_str(),O_CREAT|O_WRONLY|O_APPEND);write(fd,logtxt.c_str(),logtxt.size());close(fd);
}
void printClassfile(int level,const std::string&logtxt)
{std::string filename=FILE_NAME;filename+=".";filename+=leveltoString(level);printOnefile(filename,logtxt);
}
void logprint(int level,const std::string&logtxt)
{switch(printmethod){case SCREEN:std::cout<<logtxt.c_str()<<std::endl;break;case ONEFILE:printOnefile(FILE_NAME,logtxt);break;case CLASSFILE:printClassfile(level,logtxt);break;}
}
void operator()(int level,const char*format,...)
{time_t t=time(nullptr);//获取时间戳struct tm*ctime=localtime(&t);//通过时间戳获取想要的时间//leftbuffer为默认信息包括:日志等级、日志时间char leftbuffer[SIZE]={0};snprintf(leftbuffer,sizeof(leftbuffer),"[%s][%d-%d-%d %d:%d:%d]",leveltoString(level).c_str(),ctime->tm_year+1900,ctime->tm_mon+1,ctime->tm_mday,ctime->tm_hour,ctime->tm_min,ctime->tm_sec);//rightbuffer 为自定义消息char rightbuffer[SIZE]={0};va_list s;//相当于char*va_start(s,format);//取format内容后s指针往上走,相当于走到可变参数的起始位置vsnprintf(rightbuffer,sizeof(rightbuffer),format,s);//左右buffer拼接char logtxt[SIZE*2]={0};snprintf(logtxt,sizeof(logtxt),"%s %s\n",leftbuffer,rightbuffer);logprint(level,logtxt);}
private:int printmethod;std::string path;
};
在makefile中提前创好一个log文件用来存放日志文件:

2.4 进程里面使用日志

所有想要显示的消息都可以往日志里面打印;

2.5运行后输出的日志消息(以分类文件打印方法)

可以看到三条日志消息都分类打印到不同的文件中!

今天分享到这里,如果对你有所帮助麻烦点赞收藏+关注哦!!谢谢!!!

咱下期见!!!

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

相关文章:

  • 合肥优化排名推广宁波seo教程推广平台
  • 株洲网站建设优化企业网页开发培训网
  • php网站开发实例代码市场调研报告范文3000字
  • 企业网站建设流程的第一步工作是2345网止导航
  • asp网站建设项目实训营销型网站有哪些平台
  • 图片展示类网站各引擎收录查询
  • 郑州东区网站优化公司推荐谷歌网站网址
  • 余姚响应式网站建设黑帽seo技术有哪些
  • 西安网站建设小红书网络营销策划方案
  • 网站建设贰金手指下拉贰壹2023年8月新冠疫情
  • 网站页头制作萝卜建站
  • 在马来西亚做博彩网站合法吗公司网站设计公司
  • 服装网上商城网站建设报告百度一下浏览器下载安装
  • 金牛区建设和交通局网站个人博客网页设计
  • 网站版心怎么做seo做的好的网站
  • 大连网站建设哪家好安康seo
  • 做平面设计都在那个网站找免费素材百度首页的ip地址
  • 网站建设 繁体免费搭建自己的网站
  • 装潢设计图片三室一厅郑州关键词优化平台
  • 微信网页制作网站建设网站流量排行
  • 税务局网站公司实名制怎么做怎么做关键词排名靠前
  • 外贸网站建设公司价位软文编辑器
  • 天河做网站设计视频号怎么付费推广
  • 秦皇岛高端网站设计百度收录提交
  • 建设一个网站的好处大数据培训机构排名前十
  • 企业电子商务网站设计的原则网络营销软文范例300字
  • 网站开发如何记账西地那非片吃了能延时多久
  • 章丘做网站互联网广告公司
  • 网站优化外链怎么做竞价推广账户托管费用
  • 网站建设与管理的展望与未来北京、广州最新发布