3

我想知道管道另一端的pid。如果是 Linux,我可以匹配ls -l /proc/SELF_PID/fd/0这些命令的 id。

[root@host ~]# command1 | 命令2 &

我知道 command2 的 PID = 5912。

[root@host ~]# ls -l /proc/5912/fd/0
lr-x------ 1 根 64 Mar 25 18:00 /proc/5912/fd/0 -> 管道:[540748072]
[root@host ~]# ls -l /proc/[0-9]*/fd/1 | grep '管道:\[540748072\]'
l-wx------ 1 根 64 Mar 25 18:01 /proc/5911/fd/1 -> 管道:[540748072]
[root@host ~]# cat /proc/5911/cmdline
vmstat12

Linux上有更好的方法吗?或如何上 BSD 和其他操作系统?

我想知道是否有一个好的CPAN模块......

谢谢。

4

1 回答 1

0

在 Perl 中,进程可以通过特殊变量 $$ 获得自己的 PID

如果您有一对管道或套接字,则每个进程都可以将自己的 PID 发送到管道或套接字中以供其他进程读取。

此外,父母通常通过创建它们的系统调用知道他们孩子的 PID。

于 2011-03-31T06:44:45.910 回答