Как достать пид с другой стороны трубы? - PullRequest
3 голосов
/ 25 марта 2011

Я хочу знать pid другой стороны трубы.Если Linux, я могу сопоставить идентификатор ls -l /proc/SELF_PID/fd/0, как эти команды.

[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 голосов
/ 31 марта 2011

В Perl процесс может получить собственный PID со специальной переменной $$

Если у вас есть пара каналов или сокет, каждый процесс может просто отправить свой собственный PID в канал или сокетбыть прочитанным другим процессом.

Кроме того, родители узнают PID своих детей обычно через системный вызов, создающий их.

...