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

企业网站主页设计模板购物网站建设网页推广

企业网站主页设计模板,购物网站建设网页推广,企业网站的短视频中心模板,网站做次级页面匿名管道 struct_file的两套资源 管道只能单向通信 特征 1.如果管道没有数据 读端在读 默认会直接阻塞正在读取的进程 2.写端写满 在写会阻塞 等待对方读取 管道设计 命名管道 实现管道通信 #pragma once #includeiostream #includestring #includesys/… 匿名管道 struct_file的两套资源 管道只能单向通信 特征 1.如果管道没有数据 读端在读 默认会直接阻塞正在读取的进程 2.写端写满 在写会阻塞 等待对方读取 管道设计 命名管道 实现管道通信 #pragma once #includeiostream #includestring #includesys/types.h #includesys/stat.h #includecerrno #includecstring #includecassert #includeunistd.h #includefcntl.husing namespace std; #define NAME_PIPE /home/ls/lesson24/tmp2bool createFifo(const string path){int nmkfifo(path.c_str(),0777);if(n0)return true;else{couterrno:errnoerr stringstrerror(errno)endl;return false;} }void removeFifo(const string path){int nunlink(path.c_str());assert(n0);(void)n;}#includecomm.hppint main(){bool rcreateFifo(NAME_PIPE);assert(r);int rfdopen(NAME_PIPE,O_RDONLY);if(rfd0)exit(0);char buffer[1024];while(true){ssize_t sread(rfd,buffer,sizeof(buffer));if(s0){buffer[s]0;coutclient-server#bufferendl;}else if(s0){coutclient quit me tooendl;break;}else{couterr string:strerror(errno)endl;break;}}close(rfd);remove(NAME_PIPE);return 0; }#includecomm.hppusing namespace std; int main(){int wfdopen(NAME_PIPE,O_WRONLY);if(wfd0)exit(0);char buffer[1024];while(true){coutPlease Say#;fgets(buffer,sizeof(buffer),stdin);ssize_t nwrite(wfd,buffer,strlen(buffer));assert(nstrlen(buffer));(void)n;}close(wfd);return 0; }共享内存 原理 接口的认识 共享内存的优缺点 和管道对比拷贝次数 实现通信 //comm.hpp #pragma once #includesys/ipc.h #includesys/shm.h #includecerrno #includecstring #includeiostream #includeunistd.h#define PATHNAME . #define PROJ_ID 0x66 #define MAX_SIZE 4096key_t getkey(){key_t kftok(PATHNAME,PROJ_ID);if(k0){std::cerrerrno:strerror(errno)std::endl;exit(1);}return k; }int getShmHelper(key_t k,int flags){int shmidshmget(k,MAX_SIZE,flags);if(shmid0){std::cerrerrno:strerror(errno)std::endl;exit(2);}return shmid; }int getShm(key_t k){return getShmHelper(k,IPC_CREAT); }int createShm(key_t k){return getShmHelper(k,IPC_CREAT|IPC_EXCL|0666); }void* attachShm(int shmid){void* memshmat(shmid,nullptr,0);if((long long)mem-1){std::cerrerrno:strerror(errno)std::endl;exit(3);}return mem; }void detachShm(void* start){if(shmdt(start)-1){std::cerrerrno:strerror(errno)std::endl;} }void delShm(int shmid){if(shmctl(shmid,IPC_RMID,nullptr)-1){std::cerrerrno:strerror(errno)std::endl;} } //shm_client.cpp #includeiostream #includecomm.hppint main(){key_t kgetkey();printf(key:0x%x\n,k);int shmidgetShm(k);printf(shmid:%d\n,shmid);sleep(5);char* start(char*)attachShm(shmid); //关联共享内存printf(attch sucess,address start:%p\n,start);const char* messagehello server,我是另一个进程 正在和你通信;pid_t idgetpid();int cnt1;while(true){sleep(1);snprintf(start,MAX_SIZE,%s[pid:%d][消息编号:%d],message,id,cnt);}detachShm(start); //去关联sleep(5);return 0; } //shm_server.cpp #includeiostream #includecomm.hppint main(){key_t kgetkey();printf(key:0x%x\n,k);int shmidcreateShm(k);printf(shmid:%d\n,shmid);sleep(5);//关联共享内存char *start(char*)attachShm(shmid);printf(attch sucess,address start:%p\n,start);//使用while(true){printf(client say:%s\n,start);sleep(1);}//去关联detachShm(start);sleep(10);//删除共享内存delShm(shmid);return 0; } 消息队列了解 信号量 为什么要有信号量 信号 实现kill #includeiostream #includeunistd.h #includesignal.h #includecstdio #includecstring #includestringstatic void Usage(const std::string proc){std::coutUsage:procpid signo\nstd::endl; }int main(int argc,char *argv[]){if(argc!3){Usage(argv[0]);exit(1);}pid_t pidatoi(argv[1]);int signoatoi(argv[2]);int nkill(pid,signo);if(n!0)perror(kill);while(true){std::couthellostd::endl;sleep(1);} } 产生信号的方式 除0的理解 软件条件 #includeiostream #includeunistd.h #includesignal.h #includecstdio #includecstring #includestring #includecstdlib/* static void Usage(const std::string proc){std::coutUsage:procpid signo\nstd::endl; } */ int cnt0; void catchSig(int signo){std::cout获取一个信号 信号编号:cntstd::endl;exit(1); }int main(int argc,char *argv[]){signal(SIGALRM,catchSig);alarm(1);while(true){cnt;} } 闹钟管理 核心转储 阻塞信号 信号捕捉流程 状态切换 实验 #includeiostream #includeunistd.h #includesignal.h #includevector#define MAX_SIGNUM 31 #define BLOCK_SIGNAL 2static std::vectorint sigarr{2,3};static void show_pending(const sigset_t pending){for(int signoMAX_SIGNUM;signo0;signo--){if(sigismember(pending,signo)){std::cout1;}elsestd::cout0;}std::cout\n; }static void myhandler(int signo){std::coutsigno号信号已经被递达std::endl; }int main(){for(const auto sig:sigarr){signal(sig,myhandler);}sigset_t block,oblock,pending;//初始化sigemptyset(block);sigemptyset(oblock);sigemptyset(pending);//增加要屏蔽的信号for(const auto sig:sigarr){sigaddset(block,sig);}//开始屏蔽 设置进内核进程sigprocmask(SIG_SETMASK,block,oblock);//遍历打印pending信号集while(true){//初始化sigemptyset(pending);//获取它sigpending(pending);//打印show_pending(pending);sleep(1);}int cnt10;if(cnt--0){sigprocmask(SIG_SETMASK,oblock,block);std::cout恢复信号屏蔽\n;}}
http://www.huolong8.cn/news/376558/

相关文章:

  • 高端网站设计哪家公司好上海网站制作团队
  • 网站管理人员队伍建设有待加强动漫设计与制作属于什么专业大类
  • 网站的域名和ip地址如何重新解析杭州app开发公司都集中在哪里
  • 英文网站建设成都地图网站开发
  • 海曙网站制作汽修网站建设免费
  • 吉林省建设工程质量监督站网站大连 做网站公司
  • 网站开发未来发展趋势小程序商城开发北京
  • 石家庄百度推广家庄网站建设wordpress 极致优化
  • 做网站编程做saas网站可行吗
  • 建设工程教育网站论坛美食网站网页设计论文
  • 搜房网网站跳出率常州网络排名优化
  • 沈阳住房和城乡建设厅网站网站设计问题
  • 极速网站制作wordpress添加多语言
  • wordpress首页添加图片不显示seo做的最好的网站
  • 网站开发的可行性传奇官网
  • 网站开发 英文文章什么网站做展板的多
  • 塔城网站seo网站备案怎么这么麻烦
  • 上海松江做网站江苏建设工程安全监督网站
  • 网站开发部门工资会计分录德语网站制作
  • app网站建设公司做企业网站的要点
  • 焦作北京网站建设中油六建公司官网
  • 有关网站建设新闻资讯山东省示范校建设网站
  • 1920的网站做字体大小怎么做网站流量赚钱
  • 室内设计意向图网站成都旅游公司排名前十
  • 做网站运营有提成吗wordpress首页文章数量
  • h5网站用什么软件做输入网址一键生成app
  • 笔记本做网站服务器商城式网站具备哪些功能吗
  • 学习网站建设的书籍做资源的教育类网站或公司
  • 常用wap网站开发工具 手机网站制淘宝领券网站怎么做
  • 梅州网站建设梅州一键建站网站