2016-07-18 14 views
-1

データをエコーする簡単なスクリプトがあり、データを他のプログラムにパイプしたいと思っています。私はC++でデータを取得する方法C++でパイプから連続入力を取得

例えば

#!/bin/bash 

echo "1st line of data" 
sleep $(($RANDOM % 10)) 
echo "2nd line of data" 
sleep $(($RANDOM % 10)) 
echo "3rd line of data" 
sleep $(($RANDOM % 10)) 
echo "4th line of data" 
sleep $(($RANDOM % 10)) 
echo "5th line of data" 
sleep $(($RANDOM % 10)) 
echo "6th line of data" 
sleep $(($RANDOM % 10)) 
echo "7th line of data" 
sleep $(($RANDOM % 10)) 
echo "8th line of data" 

その後

sh echo_data.sh | ./parse_data 

+0

データを標準入力ストリーム、別名 'std :: cin'または' stdin'から読み込みます。 –

答えて

1

stdinから入手できます。

std::string line; 
while (std::getline(std::cin, line)) { 
    // parse line 
} 
+0

そのスクリプトは例であり、例です。私は停止されない限り、エコーを止めないプログラムを持っています。あなたのコードでは、それがループを停止するデータを受け取っていない場合、私はループを実行し続ける必要があります。 これを行う必要がありますか? \t一方(TRUE){ \t \t場合(STD :: getlineの(スタンダード:: CIN、ライン)){ \t \t \t //解析ライン \t \t} \t} – FFY00

+0

が読み取る場合にのみ、ループは終了しEOF、またはそれは何らかのエラーを満たしています。データを受信しなければ、プログラムはそこでブロックし、 'stdin'からの入力を待ちます。 –

+0

'echo_data.sh'が閉じられたときだけ止まるのですか? – FFY00

関連する問題