JAVA访问Linux管道,Linux 管道

本文介绍了Linux中的管道机制,作为进程间通信的方式。通过管道,数据可以在进程间单向传递。文章展示了如何在JAVA中创建和使用管道,包括创建管道的系统调用,以及在父子进程间传输数据的示例代码。
摘要由CSDN通过智能技术生成

管道(pipe)是进程间通信的一种实现方式。在 Linux 系统中,管道本质上是一种特殊的文件,它的主要用途是实现进程间的通信。文中演示所用环境为 Ubuntu 18.04 desktop。

在 shell 中执行下面的命令:

$ echo abc | cat

echo 命令的输出通过管道作为了 cat 命令的输入。这里面的具体操作是由 shell 程序完成的。

管道的一个显著特点是:创建一个管道后,会获得两个文件描述符,分别用于对管道进行读取和写入操作。通常将这两个文件描述符称为管道的读取端和写入端,从写入端写入管道的任何数据都可以从读取端读取。

对一个进程来说,管道的写入和读取操作与写入和读取一个普通文件没有什么区别,只是在内核中通过这种机制来实现进程间的通信而已。

管道的创建和关闭

创建管道使用的系统调用的函数声明如下:

#include

int pipe(int filedescriptors[2]);

pipe 函数相对来说是一个比较底层的函数,它创建一个管道(相对于命名管道而言,这个管道又被称为匿名管道)。参数 filedescriptors 是一个长度为 2 的整型数组,用于存放调用该函数所创建管道的文件描述符。其中 filedescriptors[0] 存放管道读取端的文件描述符,filedescriptors[1] 存放管道写入端的文件描述符。调用成功时,返回值为 0;调用失败时,返回值为 -1。

由此可知,管道本身是一个抽象的概念,其本质是通过对特殊文件的读写实现进程间的通信。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个文件描述符进行,它们分别代表管道的两端。因此管道是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值