金华塑料PE板品牌信息推荐「星驰」[星驰60b5ccc]内容:在主进程中利用fork()函数创建一个子进程,这样父子进程同时拥有对同一管道的读写句柄,因为管道没有提供锁定的保护机制,所以必须决定数据的流动方向,然后在相应进程中关闭不需要的句柄。这样,就可以使用read()和write()函数来对它进行读写操作了。使用无名管道进行进程间通信的步骤概述如下:①创建所需的管道;②生成(多个)子进程;③关闭/文件描述符,使之与相应的管道末端相联系;
![](https://img3.dns4.cn/pic1/347052/p2/20230207092222_0645_zs.jpg)
使用无名管道互相连接的任意进程必须位于一个相关的进程家族里。因为管道必须受到内核的限制,所以如果进程没有在管道创建者的家族里面,则该进程将无法访问管道。 [2] 3 命名管道在Linux系统中,可以识别命名管道文件。例如:$ls-lfilenameprw-r--r--lrootroot0sep2719:40filename|filename文件名后跟着一个“|”符号表明该文件是管道文件。无名管道应用的一个重大限制是只能用于具有亲缘关系的进程间通信,在命名管道提出后,该限制得到了克服。
![](https://img3.dns4.cn/pic1/347052/p2/20230207092219_3146_zs.jpg)
![](https://img3.dns4.cn/pic1/347052/p2/20230207092219_5021_zs.jpg)
命名管道提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信。因此,通过FIFO,不相关的进程也能交换数据。FIFO管道的打开方式与普通管道有所不同,普通管道包括两个文件数据结构:对应的VFS索引节点以及共享数据页,在进程每次运行时都会创建一次,而FIFO是一直存在的。
![](https://img3.dns4.cn/pic1/347052/p2/20230207092219_2052_zs.jpg)
管道的不足管道提供了从一种进程向另一种进程传输数据的有效方法,但是,管道还是存在一些不足:①因为读数据的同时也将数据从管道移去,因此管道不能用来对多个接受者广播数据。②如果一个管道有多个读进程,那么写进程不能发送数据到的读进程。同样,如果有多个写进程,那么没有方法来判别是它们中的哪一个发送的数据。mkfifo提供了直接改变文件读写权限的功能。mknod创建的文件通过chmod可以改变权限。其中参数p表示所建立的节点,即特殊文件的类型为命名管道。
![](https://img3.dns4.cn/pic1/347052/p2/20230207092219_5021_zs.jpg)
以上信息由专业从事塑料PE板品牌的星驰于2024/8/13 13:00:14发布
转载请注明来源:http://m.tz1288.com/qynews/zjxcgd-2801175698.html
上一条:深圳果蔬冷藏冷库保鲜服务至上「深圳德宝冷库」
下一条:广东Dic微分干涉视觉检测承诺守信「雅创科技」