2016-08-07 14 views
-1

私はLinuxのパイプ上の割り当てに取り組んでいます。私はhello worldを印刷するプログラムを持っています。引数はありません。しかし、私はプログラムを実行し、コマンドライン引数を./a ls | wcとして提供します。私は出力0 2 11を得ます、すなわちhello worldの出力はwcにパイプを通して渡されます。誰かがこの行動を説明できますか?コマンドライン引数でパイプを使用する

+0

何を説明しますか?なぜあなたはそれを期待していませんか? –

+0

...その質問は修辞的ではありませんでした:あなたの現在の理解が何であるかを知っていない限り、その理解の問題にどのように対処しているのか、 –

+0

(あなたがWindowsを利用している場合は、ユーザが指定した文字列でコマンドが独自の引数リストを解析する世界に慣れている可能性があります。コマンドが取得する唯一のものは、引数ごとに1つの、個々の文字列のC配列です)。 –

答えて

2

あなたのプログラムが引数を取らないので、あなたは、引数としてそれをlsを通過したという事実は、その出力に違いはありません:それはその引数を無視し、まだhello world発光だ、それはlsが渡されていなかったならば同じようにその引数リスト


パイプラインがFIFOをセットアップすること、つまり2つのプログラムを接続することを理解してください。

./a ls ## this program's output... 
wc  ## ...is connected to this program's input. 

パイプラインは、従って、引数aにありません。 出力aをルーティングする方法についてのシェルへの指示です。この場合は、標準入力にwcというようにルーティングするよう指示されています。

関連する問題