pipexec是否会创建一些子进程?

时间:2016-10-26 11:41:40

标签: bash pipe stdout stdin ps

我正在使用pipexec工具来管理进程之间的通信。 我的任务要求我检索通信进程的ID。

示例:

pipexec -- [ A ./cmd1 ] [ B ./cmd2 ] "{A:1>B:0}" "{B:1>A:0}" &

然后:

ps --ppid xxxx

其中xxxx是pipexec进程的pid。 我可以确定是否会显示正好2个进程,或者是否有可能pipexec在某个运行点运行某个内部进程?

1 个答案:

答案 0 :(得分:1)

来自pipexec手册页:

  

pipexec创建进程的任意网络(有向图)   和管道之间 - 偶数循环是可能的。它克服了   通常只能创建非shell的shell的缺点   循环树木。

     

pipexec还会监视其所有子进程,并能够重新启动   如果一个崩溃,整个过程和管道网络。因此   pipexec可以在SYSV-init或systemd配置中使用来运行   流程网络。

因此,如果在pipexec重新启动网络"时出现故障,可能会创建比您所知的更多的进程。 但假设没有失败,pipexec似乎只创建了您指定的进程数。在实验上,我看到了:

$ ps -af
UID        PID  PPID  C STIME TTY          TIME CMD
usr  6531 29605  0 13:02 pts/9    00:00:00 pipexec -- [ A /bin/sleep 30 ] [ B /bin/sleep 40 ]
usr  6532  6531  0 13:02 pts/9    00:00:00 /bin/sleep 30
usr  6533  6531  0 13:02 pts/9    00:00:00 /bin/sleep 40
跑步时

pipexec -- [ A /bin/sleep 30 ] [ B /bin/sleep 40 ]

这可能是也可能不是普遍正确的。但我无法在文档中找到任何有关此内容的内容。