最后更新:2022-04-12 22:36:43 手机定位技术交流文章
众所周知的管道和未知管道之间的唯一区别是文件系统中是否有文件名称。
在申请一级,有程序(a)和(b)。在应用层,这两个程序不是直接共享的。他们必须通过内核进行沟通,而这是他们通过使用管道实现的。进程a 将数据插入管道。管道的数据由 Processb 读取 。这使进程a和进程b能够相互沟通。
无名管道只能实现亲子关系之间的沟通进程,如父子关系进程,不能使用匿名渠道而不相互连接,如上文提到的流程a和b。
(1)pipe函数
作用:创建管道
(2) 使用匿名管道的程序:
建立匿名管道,使用管道()。
b. Fork () 启动一个子进程, 一次读取( 使用读( ) ), 一次写入( 使用写( ) ) 。
(3) 匿名管道测试案例研究
在建立匿名管管测试码时,有一个问题:管道功能在叉子功能之前或之后被叫来建造管子吗?在两个地点建造管子是否可行?
无名输油管只能实现亲子关系沟通,因为它能保证同一管线被使用。 您如何确保您在叉子功能位于同一管线之前建立管道功能?
如果父进程不写入数据,在此程序中返回以下代码:
当执行子进程时,你会看到它没有打印打印项目。为啥呢?因为父亲的程序不使用管子写字父亲的过程被阻断了 没有任何东西在管道里阻塞了),写入函数必须在父进程下调用 。让父进程将数据插入管道。
申请完成后,关于Ubuntu的汇编结果如下:
查看 Ubuntu 界面汇编的结果显示,文档描述符的返回值是 3 和 4, 为什么是 3 和 4? 因为文档描述符 0,1,2 表示标准输入、标准输出和标准错误, 序列从 3 开始 。
此外,管道是在记忆中建立起来的, 一旦操作完成, 空间就会释放, 管道将不复存在。 您无法读取管道中的内容, 您无法读取。 您读取后无法移除它 。
众所周知的管道可以使相互之间没有联系的流程之间进行沟通。
有管道是因为在文件系统中存在这样的文件名 。这是一个独特的文件格式。是管道类型。我们只需要知道文件的位置在没有任何亲子关系的情况下,程序之间的沟通是可能的。在使用有名管道时,第一步是在文件系统中创建这样的文件 。无法使用 Open 函数或书架函数创建此文件名 。因为 Open 函数只能用于生成标准文件,无法为 %s 建立文件夹锁定:%s 。如何创建这种特殊文件( 管道型文件)?mkfifo 函数显示如下。此功能可在用户手册第三页找到。
(1) 使用 mkfifo 函数。
函数执行以下函数:它创建一个特殊文件,如 FIFO,如果成功则返回 0 值;它造成失败,返回 1 值。
有像这样的函数, 因此在 Ubuntu 接口“ man 1 mkfifo” 上有一个要输入的命令。 命令“ mkfifo” 将被显示。 命令的函数是使用“ mkfifo + FIFO 文件名” 构建 FIFO 。
i. 即使用两种方法之一在文件系统中创建 FIFO 文件: 直接创建命令或在代码中引用 mkfifo 函数 。
(2) 众所周知的管道测试说明
a. 使用命令制作信息信息。
使用 IS- al 命令检查权限; 注意 Fifo 文件类型, 这意味着 p; 注意文件大小为 0, 这表明管道的文件类型仅仅是节点, 不占用磁盘空间( 设备文件的一部分不占用磁盘空间), 使用 IS- al 命令的许可; 注意 Fifo 文件类型, 这意味着 p; 注意文件大小为 0, 这表明管道的文件类型只是节点, 不占用磁盘空间( 设备文件的一部分不占用磁盘空间 )。
b. 使用 mkfifo () 函数创建已知管道。
第一步:读数据
从已知的管道读取数据, 也从命令行读取, 文件即将打开, 以“ 仅读” 模式打开, 然后每秒读取 fifo 文件的数据, 将其放入 buff, 并打印 buff 的内容 。
读数据的代码如下:
阅读文件的代码是使用Ubuntu界面建立和运行的,结果如下:
可以观察“阅读数据”的汇编和运作结果。阻塞没有布料打印,也没有指示管子或管子都存在障碍,即使河里没有数据,也存在障碍。
之后,将重新开放一个终端,以构建数据写法代码,该代码将看起来如下:
构建并运行 fheyo_ write 文件, 允许它将数据写入 fifo, 然后运行 fifo_ read 以确定是否成功执行 。
调查结果如下:程序fifo_read 显示器每秒都有buff的问候。
杀死 fifo_ write 进程后, 您就会看到 fifo_ read 仍然打印, 但内容是空的。 现在是在 fifo_ wride 结尾处放下进程并停止操作的时候了 。
本文由 在线网速测试 整理编辑,转载请注明出处。