首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道中的其他程序

问管道中的其他程序
EN

Stack Overflow用户
提问于 2013-06-25 22:00:14
回答 2查看 124关注 0票数 2

如果使用管道调用程序PROG,

代码语言:javascript
复制
progA | progB | PROG | progC ...

有没有办法让它知道它是在什么上下文中被调用的-例如,从/到什么其他程序(A,B,C...)它是接收还是发送管道输出?

我最感兴趣的是PROG的直接前身(在上面的示例中是progB),但也对更一般的问题感到好奇。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 22:15:00

如果您使用的是Linux,那么可以使用/proc filesystem检查命令是如何通过管道进行通信的。然而,这并不是真正的可移植性。

票数 2
EN

Stack Overflow用户

发布于 2013-06-25 22:24:36

您可以使用ps来显示具有相同父进程的所有进程。例如,如果PROG具有PID,则在Linux上可以执行以下操作:

代码语言:javascript
复制
ps --ppid $(ps -o ppid= $PID)

以获取管道中所有命令的列表。(实际上,您将获得调用管道的shell的子级的所有命令,这可能就足够了。您可以检查每个进程的进程组,以确定哪些进程实际上在管道中。)它们打印的顺序不一定是它们在管道中出现的顺序,您可以在/proc/pid/fd中查看每个进程输入的inode,以确定它们是如何排列的。

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

https://stackoverflow.com/questions/17299360

复制
相关文章

相似问题

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