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

衡水网站建设怎么做电商平台网页制作

衡水网站建设怎么做,电商平台网页制作,wordpress流量站,用wordpress如何做网页前言(前情回顾) 进程君(父进程)在开发出匿名管道这门传音术后,解决了和自己孩子(子进程)间的沟通问题,父子关系趋于融洽。和孩子沟通后,进程君发现,自己脱离…

前言(前情回顾)

进程君(父进程)在开发出匿名管道这门传音术后,解决了和自己孩子(子进程)间的沟通问题,父子关系趋于融洽。和孩子沟通后,进程君发现,自己脱离群众太久了,应该加强和群众的沟通。但是进程君与众位道友间没有血缘关系,无法使用匿名管道进行沟通。于是进程君决定改良匿名管道这种技术,让天下道友都能与自己畅通无阻的沟通,最终产生了一种无暇的传音技术——命名管道(FIFO)。

命名管道

我在上一篇文章中提到过:
“两个没有血缘关系的进程间可以同时打开相同的文件,进程内部分配对应的文件描述符,映射关系记录在PCB中,而两个进程间的fd分配时独立的,也就是fd在多进程中不是唯一的。当然我们也可以在进程1中向文件1写入数据,进程2从文件1中读取数据,构成一个伪管道。”
在这里插入图片描述
其实这里面的伪管道就是命名管道的意思。创建一个命名管道就是在Linux文件系统下创建一个特殊的fifo文件。与匿名管道的区别是,匿名管道也是文件,但它对文件系统不可见。而命名管道是一个可以在文件系统中看见的文件。

命名管道的创建:mkfifo()

#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *filename, mode_t mode);

这里的filename是一个字符串,描述了命名管道在文件系统中的路径,当字符串中没有‘/’出现是则管道创建在当前目录下。mode一般为0777,对应一个权限掩码,这里不做重点。直接写入即可。
我们先测试一下这个函数,在这里我创建了三个命名管道分别为demo1,demo2,demo3,编译后运行:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>int main() {int res1 = mkfifo("demo1",0777);		// 创建于当前路径下int res2 = mkfifo("./demo2",0777);		// 创建于当前路径下int res3 = mkfifo("../demo3",0777);		// 创建于上一级路径下while(1);return 0;
}

观察运行前后的工程目录
在这里插入图片描述
可以发现运行后我们的工程目录下出现了三个新的文件,这三个文件就是我们的命名管道。这就是命名管道对文件系统是可见的这句话的含义。
相信一些脑洞大开的道友已经有了想法,既然命名管道在文件系统中可见,也就说明所有的进程都可以访问这个文件,那么只要我向这个进程中读写文件,是不是就完成了进程间的通信?
答案是:完全正确
如何实现对文件的读和写?不清楚的道友可以去看我之前写的一篇文章:linux多线(进)程编程——(1)前置知识
我们直接上代码,为了体现出命名管道与匿名管道的区别,这次我们要真正实现在两个程序间通信,所以我们要写两个C语言源文件。

proc1.c:创建命名管道并且向命名管道内写入数据

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int main() {int res1 = mkfifo("fifo_demo", 0777);int wfd = open("fifo_demo", O_WRONLY);	// 只写char send_buf[20];bzero(send_buf, 20);memcpy(send_buf, "hello, world!", 14);while(1) {write(wfd, send_buf, 20);sleep(1);}return 0;
}

proc2.c:接收管道内的数据

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int main() {usleep(500*1000);// int res1 = mkfifo("fifo_demo", 0777);int rfd = open("fifo_demo", O_RDONLY);	// 只读char recv_buf[20];while(1) {bzero(recv_buf, 20);read(rfd, recv_buf, 20);printf("%s\n", recv_buf);sleep(1);}return 0;
}

在命令行中运行程序,其中后面加一个&,表示在后台运行,让出终端

lol@qingfenfuqin:~/work/linux_study/pipe/fifo$ gcc -o proc1 proc1.c
lol@qingfenfuqin:~/work/linux_study/pipe/fifo$ gcc -o proc2 proc2.c
lol@qingfenfuqin:~/work/linux_study/pipe/fifo$ ./proc1&
[1] 9729
lockin@qingfenfuqin:~/work/linux_study/pipe/fifo$ ./proc2
hello, world!
hello, world!
hello, world!
hello, world!
...

注意:
(1)在两个程序中每次写入和读取的字节数量保持一致。
(2)在程序编写时就应该知道管道的名字。
(3)管道是单工通信,开发时不能又读又写,仅能以只读(O_RDONLY)或者只写(O_WRONLY)打开。

小结

这节课的知识点:
(1)命名管道的创建方法:mkfifo();
(2)命名管道与文件的关系,如何操作命名管道:read();write();
(3)如何在后台运行一个进程:&。
(4)命名管道与匿名管道的差异,以及对文件系统的可见性。

下一集我们将学习进程间第二中通信方式——共享内存的前置知识:linux多线(进)程编程——(5)虚拟内存与内存映射

结束语

“进程君开发出匿名管道与命名管道后,九天十地的道友终于可以畅通无阻的沟通交流了。”
听完这个修仙界传说,不知不觉间你的识海中也多了一道无暇神通,千里传音术——管道。
祝各位道友早日神功大成。


文章转载自:

http://qK68EQj0.Lznqb.cn
http://dl2NbnUR.Lznqb.cn
http://swtcSbw6.Lznqb.cn
http://Cq5zxP6D.Lznqb.cn
http://ALmkrM1C.Lznqb.cn
http://5lM2WCKd.Lznqb.cn
http://TsVAbCH0.Lznqb.cn
http://jLkNHZt8.Lznqb.cn
http://y2gGmFa2.Lznqb.cn
http://cvENp3X4.Lznqb.cn
http://ObC9jGOd.Lznqb.cn
http://i9ixKb34.Lznqb.cn
http://EbPjQlKV.Lznqb.cn
http://aRtThdax.Lznqb.cn
http://IVr49Xa6.Lznqb.cn
http://EXyyaQ0k.Lznqb.cn
http://N1yz3ntD.Lznqb.cn
http://Xm2lKjL2.Lznqb.cn
http://0rVHH58b.Lznqb.cn
http://nXveVuXo.Lznqb.cn
http://63dfgrfc.Lznqb.cn
http://tu49gVPF.Lznqb.cn
http://EYq2C1m5.Lznqb.cn
http://zUD9RrCl.Lznqb.cn
http://tfUN1O61.Lznqb.cn
http://nSVQIsKX.Lznqb.cn
http://cZJRmzRl.Lznqb.cn
http://FxL79kTB.Lznqb.cn
http://UjvFMAuy.Lznqb.cn
http://86j2lri2.Lznqb.cn
http://www.dtcms.com/wzjs/778410.html

相关文章:

  • 苏州高端网站建设公司怎么让自己的网站
  • 青岛网站建设及app上海建工网站
  • wordpress离线写文章在seo优化中
  • 泰兴市淘宝网站建设WordPress主题添加点赞喜欢按钮
  • 做网站花多钱桂林本地网站
  • 江西中恒建设集团有限公司网站北京百度快照推广公司
  • 怎么查网站是用什么语言做的做网站商城前景怎么样
  • 免费绘画素材网站做网站导航能赚钱吗
  • 镇江企业做网站网页打不开微信可以上什么原因
  • 网站建设的介绍重庆门户网站建设
  • php网站如何做特效手机网页制作网站建设
  • 档案网站 内容建设外网vp(永久免费)加速器下载
  • seo站点建立网站赚多少钱
  • 做的网站访问速度慢建立网站赚钱 优帮云
  • 营销网站外包没有平台没有网站怎么做外贸
  • 在电脑上怎么创建微网站吗淘宝店铺可以做网站优化么
  • 中国建设管理信息网站六安市城市建设档案馆网站
  • 帝国建站系统建设网站有什么作用
  • 网站建设咨询公长沙做网站哪个最好
  • 六安网站关键词排名优化地址广州住房与建设网站
  • 泰安集团网站建设方案福建住房和城乡建设厅网站一体化平台
  • 个人备案放企业网站万网网站后台登陆
  • 做软件的网站php原来做网站后来跑国外了
  • 发帖子最好的几个网站深圳网站建设龙华
  • 宁波网站建设主页苏州seo推广公司
  • 虚拟主机可以建设什么网站做高端网站
  • 校园社交网站开发的目的与意义惠州app开发公司
  • 优秀网站设计案例分析ppt怎么开一家网站开发公司
  • 网站建设报告心得体会企业文化培训心得体会
  • 深圳福田专业网站建设站长工具友链检测