我正在使用pipexec工具来管理进程之间的通信。 我的任务要求我检索通信进程的ID。
示例:
pipexec -- [ A ./cmd1 ] [ B ./cmd2 ] "{A:1>B:0}" "{B:1>A:0}" &
然后:
ps --ppid xxxx
其中xxxx是pipexec进程的pid。 我可以确定是否会显示正好2个进程,或者是否有可能pipexec在某个运行点运行某个内部进程?
答案 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 ]
这可能是也可能不是普遍正确的。但我无法在文档中找到任何有关此内容的内容。