なぜパイプを削ることができないのですか? [閉鎖]

なぜパイプを削ることができないのですか? [閉鎖]

についての議論で猫の無駄な使用

私はパイプの所有者を変更することで問題を回避できるかどうかを調べることにしました。だから私はこれをしました:

# cat | cat &
[1] 16500
# cd /proc/16500/fd
# ls -l
lr-x------ root root 0 -> pipe:[931613]
lrwx------ root root 1 -> /dev/tty1
lrwx------ root root 2 -> /dev/tty1
# chown --dereference daemon 0
# ls -l
lr-x------ root root 0 -> pipe:[931613]
lrwx------ root root 1 -> /dev/tty1
lrwx------ root root 2 -> /dev/tty1

私もそれをしてみましたが、行きませchownchown -Lでした。私はこれが不可能だと確信しています。ところで、なぜそうなのでしょうか?明らかにインデックスノードがあります。 931613はアノード番号です。

本当に興味があれば、右側のプロセスはより低い権限で実行され、プロセスを再び開くことができるように独自のハンドルを持っていると思います。

答え1

私は注文を台無しにしたことがわかりましたls

# ls -lL
lr-x------ daemon root 0 -> pipe:[931613]
lrwx------ root   root 1 -> /dev/tty1
lrwx------ root   root 2 -> /dev/tty1

これはタイプミスではありません。これは正確に1文字で修正された論理エラーでした。あなたは私を見る知るこれらのノードは実際のシンボリックリンクではありません。これはchroot刑務所で開かれていても、それを開くと正しいファイルが生成され、出力に誤ったパスが生成されるためですls -l。どういうわけか、カーネルシステムコールが実際に返されるよりも基本的なinodeのより多くの属性を返すと思います。

関連情報