ファイルストリームとファイル記述子について

ファイルストリームとファイル記述子について

追加の背景について尋ねます。これ以前に質問して内容を理解したと思いましたが、これ以上ではありません。

私はecho無視することを知っていますstdin。私はstdinstderrそしてstdout存在することを知っており、この場合にはこれら以外の「事物」が存在することを知りません。

だからechoignoresならstdinどこで入力を得るのですか?stdin全体的な話は伝わってstdoutいないようですstderr

ベストアンサー1

混乱した原因を私が理解したかどうかはわかりません。しかし、心に留めておいてください。Unixではコマンドライン引数(fooおよびbarfrom echo foo bar)と環境文字列(FOO=barfrom env - FOO=bar printenv)は簡単です。コピーこれは、他のメモリと同様に(ポインタなどを介して)プロセスのアドレス空間でカーネルによってアクセスされます。標準のstdin、stdout、stderr、または追加のファイル記述子などのプロセスでは、読み書きできません。またはメモリマップされたファイルの転送。

これは自然法則ではなく、Unixで動作する方法にすぎません。これは間違いなく古く、一貫性がなく、非効率的です(全体またはほとんどを無視しても、プロセスごとに環境全体のコピーを作成します)。

さまざまな構成が可能です -計画9、環境文字列は実際にはファイルです/env(これはプロセス間で共有される可能性があることを意味します)。

LD_PRELOADLinuxでは、ハッキングを使用してargv + env制限をバイパスすることもできますmemfd_create

おすすめ記事