エコーやcatコマンドを起動して同じコンソールに入力することもできますか?
単純にNO! cat
は現在のコンテンツを書き込みます。 catはコンテンツが後で成長することは知らない。 echo
は、与えられたコマンドラインから変数と結果を書き出します。エコー自体はファイルの内容を書くために作られていません。
プロセスをバックグラウンドで実行した場合、実際にはこのコンソールに出力が表示されますが、それは正しい方法ではありませんか?
出力をリダイレクトしないと、出力はコンソールに送られます。つまり、論理的に、私は、コンソールのFD(しかし、どのようにそれをする)を取得する必要があると思う
:-)に設計し、そのFDにテール出力を強制されている方法と、おそらく背景もあります。
私は反対の方向であることを理解したよう。プロセスからstdinに書き込む場合は、パイプを使用するだけです。 (役に立たない)例は、catがパイプに書き込みを行い、次のコマンドがパイプから読み込むことを示しています。他のパイプ読み取り/書き込みシナリオにも拡張できます。下記のリンクを参照してください。
例:
cat main.cpp | cat /dev/stdin
cat main.cpp | tail -f
それはパイプが起こることはありませんより多くのコンテンツを取得することを待っているので、最後の1が、終了しません。
実際にこれを行うのは問題ないのですか、単純なタスクのために多くのプロセスオーバーヘッドを作成していますか?言い換えれば、多くのものを配管するのはいいですが、それは多くのオーバーヘッドを生み出します。それは、その作業をたくさん繰り返すことが理想的です。
あなたの仕事がどのくらい時間が重要か分かりませんが、オーバーヘッドはかなり低いと思います。自己書かれたprogで同じことをするのは早くてはいけません。すべてが単一のプロセスで実行され、ファイルシステムへのアクセスが必要ない場合は、はるかに高速になります。しかし、システムコールも使用しているとします。ファイルシステムのアクセス、それは私が信じてはるかに高速ではありません。あなたはいつもあなたが得る仕事のためにお金を払わなければなりません。
IOリダイレクションのために読んでください: http://www.tldp.org/LDP/abs/html/io-redirection.html
をあなたのシナリオがより複雑である場合は、代わりにIOリダイレクションの名前付きパイプを考えることができます。そのために、あなたは見て持つことができます:はい、それはすべてのシステムの束までに沸騰 http://www.linuxjournal.com/content/using-named-pipes-fifos-bash
をので、オーバーヘッドを分析するための良い方法はthatsの呼び出しを:) – Nishant
@Nishant:Simlplyは、アイデアを得るために 'strace'を使用オーバーヘッドとコール量の – Klaus