「パイプを開けておく」とはどういう意味ですか?

「パイプを開けておく」とはどういう意味ですか?

私はLinuxアプリケーションのさまざまなエクスプロイトの練習に従ってきました。私はこれをかなりよく理解していますが、一部の人は「パイプを開いたままにする」ためにcatを使用すると言いました。ここ

たとえば、

(python2 exploit.py ; cat) | ./programToExploit

実際に「パイプを開いておく」とは実際に何を意味し、上記のコマンドのようにパイプを開いたままにする方法は何ですか?

ベストアンサー1

違いを見る

echo 'ls' | sh -s

そして

( echo 'ls'; cat ) | sh -s

または、

{ echo 'ls'; cat; } | sh -s

ここで、sh -s標準入力()から実行するコマンドを読み取ってシェルセッションを開始します-s

最初の例では、シェルが実行されls終了します(入力がなくなったため)。

2番目と3番目の例では、シェルが実行され、ls入力がなくなるまで待ちます。入力ストリームは最初sh -sにコマンドによって生成され、引き継がれます。プロセスは、親シェルセッションからデータを読み取り、コマンドを。echocatcatsh -sls

catこれは、入力の終了を通知するために空白行を押してプロセスを終了するまで続きます。Ctrl+D

私はこれが「パイプを開いたままにしておくこと」が意味していると信じています。

おすすめ記事