首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >管道()系统调用

管道()系统调用
EN

Stack Overflow用户
提问于 2012-02-21 10:42:29
回答 3查看 880关注 0票数 1

我正在学习系统类中的管道和外壳。我在和strace胡闹。我在一个叫dpipe的程序上运行它。

strace日志中,我看到了以下内容:

代码语言:javascript
运行
复制
pipe([3, 4])
pipe([5, 6])

这些整数代表什么?在shell中,管道基本上是用来将一个命令的输出路由到使用|的另一个命令的输入。所以这只会让我们的生活更轻松。在这种情况下,上面的数字数组代表什么?此外,如果piping只是在shell中使用,为什么会有C系统调用来支持它?这是专为那些想要编写自己的shell (让他们的生活更容易)的人而做的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-21 10:52:30

Ignacio正确地解释了方括号中的数字是由pipe()系统调用返回的两个文件描述符。第一个是管道的读取端,第二个是管道的写操作。

管道绝不是仅由shell使用的,尽管这可能是使用它们的最常见的地方。但是,它是反向的;shell只能使用系统提供的系统调用,并且因为系统提供pipe(),所以shell能够提供管道。如果没有o/s以系统调用的形式提供支持,外壳就不太可能提供管道表示法。所有的系统调用都是为了让程序员能够为他们的客户(他们编写的软件的最终用户)提供服务。

票数 1
EN

Stack Overflow用户

发布于 2012-02-21 10:44:25

它们是由pipe(2,3p)返回的文件描述符。有关详细信息,请参阅pipe(2)手册页。

票数 3
EN

Stack Overflow用户

发布于 2012-02-21 10:48:10

它们是文件描述符。而且管道并不只是在外壳中使用。管道可以由任何程序完成,它是Unix中进程交换信息的主要方式。对于shell来说,它并不是什么特别的东西。shell只是一个普通的进程,它使用户可以轻松地启动其他进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9371401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档