如何获得管道另一侧的pid?

时间:2011-03-25 09:11:15

标签: linux perl bsd

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

[root@host ~]# command1 | command2 &

I've known command2's PID = 5912.

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

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

在Perl中,进程可以使用特殊变量$$

获取自己的PID

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

此外,父母通常通过系统调用来了解他们孩子的PID。