[英]Other programs in pipe
如果使用管道调用程序PROG
,
progA | progB | PROG | progC ...
有没有办法告诉它在什么上下文中被调用-即,从/到其他程序(A,B,C ...)正在接收或发送管道输出?
我最感兴趣的是PROG
前身(在上面的示例中为progB
),但也对更笼统的问题感到好奇。
如果您使用的是Linux,则可以使用/proc
文件系统检查命令如何通过管道进行通信。 但是,这并不是真正可移植的。
您可以使用ps
来显示具有相同父项的所有进程。 例如,如果PROG具有pid PID,则在Linux上,您可以执行以下操作:
ps --ppid $(ps -o ppid= $PID)
以获得管道中所有命令的清单。 (实际上,您将获得作为调用管道的Shell的子命令的所有命令,这可能就足够了。您可以检查每个命令的进程组以确定哪些命令确实在管道中。)它们的顺序打印不一定是它们在管道中出现的顺序,您可以在/proc/pid/fd
中查看每个进程的输入的inode以确定它们如何排列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.