ファイル記述子がパイプへのリンクであるとはどういう意味ですか?

ファイル記述子がパイプへのリンクであるとはどういう意味ですか?

を見ると、ls -la /proc/<pid>/fdstdoutがパイプへのリンクであることがわかります。

lr-x------    1 admin    root            64 Jul  9 21:22 1 -> pipe:[1155]

どういう意味ですか?このパイプを聞く人は誰ですか?このプロセスの標準出力をどのように表示できますか?

ベストアンサー1

次から借りるこの回答これは、PIDを持つプロセスの標準出力が<pid>次にリダイレクトされたことを意味します。管路(一種の先入選出ファイルシステム階層には表示されません)1155パイプのinode番号(Linuxでは次のこと/proc/[pid]/fd/ができます)。proc(5)詳細はマニュアルページを参照)。

一例:

$ cat - | less
$ pgrep cat
187873
$ ls -l /proc/187873/fd/1
l-wx------ 1 user user 64 Jul  9 22:23 /proc/187873/fd/1 -> 'pipe:[1624839]'

の標準出力はcatインデックスノードがインパイプの書き込み端にリダイレクトされる1624839のに対し、 の標準入力はless読み出し端からリダイレクトされます。

パイプの読み取りの最後に接続されているプロセスについて何も知らない場合は、パイプが開いているすべてのプロセスを検索できます(ただし、それを表示するために必要な権限がない可能性があります)。

$ fuser -v /proc/187873/fd/1
                     USER   PID ACCESS COMMAND
/proc/187873/fd/1:   user  187873 F.... cat
                     user  187874 f.... less

次に、less開いていることを確認します(読み取り用)。

$ ls -l /proc/187874/fd/0
lr-x------ 1 user user 64 Jul  9 22:28 /proc/187874/fd/0 -> 'pipe:[1624839]'

おすすめ記事