画面に「aaa」を表示したい場合:
(1)$: echo aaa | cat ... works OK
(2)$: echo aaa | ( cat ) ... works OK
(3)$: echo aaa | ( cat & ) ... NOT working
(4)$: ( echo aaa & ) | cat ... works OK
(5)$: echo aaa | ( cat <&0 & ) ... works ok in BASH (but not in SH)
(6)$: echo aaa | ( cat <&3 & ) 3<&0 ... works ok in BASH and SH
(3)と(4)からの結論->切り離されたプロセスには、制御、使用、リダイレクトが可能な接続された出力がありますが、入力はできません!
私の質問は:誰かが行(5)がなぜそしてどのように機能するかを理解していますか?
...「<&0」は「0 <&0」の略で、0を0にリダイレクトすることが解決策である理由、および切り離されたプロセスの入力で実際に何が起こるか。サブシェルは問題ではありません。(...)の代わりに中括弧{...}を使用すると、同じ結果が得られます。
...そして質問2:「デタッチされたプロセスに入力を与える」ためのより良い解決策は行(6)よりもありますか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加