linux-Shell如何以编程方式实现管道?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-Shell如何以编程方式实现管道?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含897字,纯文字阅读大概需要2分钟。
内容图文
我了解I / O重定向在Unix / Linux中的工作方式,并且我知道Shell使用此功能通过特殊类型的文件-匿名管道来管道程序.但是我想知道Shell如何以编程方式实现它的细节吗?我不仅对涉及的系统调用感兴趣,而且对整个图片感兴趣.
例如ls | sort,Shell如何为ls和sort执行I / O重定向?
解决方法:
整个情况很复杂,最好的理解方法是研究一个小壳.对于有限的图片,这里去.在执行任何操作之前,shell会分析整个命令行,因此它确切地知道如何链接进程.假设它遇到了proc1 | proc2.
>它设置了一个管道.长话短说,写在管道[0]中最终在管道[1]中
int thepipe[2];
pipe(thepipe);
>派生第一个进程并在执行前更改其stdout的方向
dup2 (thepipe[1], STDOUT_FILENO);
>它执行了新程序,该程序非常高兴地不知道重定向,只是像行为正常的过程一样写入stdout
>派生第二个进程并在执行前更改其stdin的源
dup2 (thepipe[0], STDIN_FILENO);
>它执行新程序,但不知道其输入来自另一个程序
就像我说的那样,这是一张有限的图片.在真实的画面中,外壳将它们以菊花链状连接成一个循环,并且还记得在适当的时候关闭管端.
内容总结
以上是互联网集市为您收集整理的linux-Shell如何以编程方式实现管道?全部内容,希望文章能够帮你解决linux-Shell如何以编程方式实现管道?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。