私は2つのプロセス:とt2.cpp
を持っています。pipeコマンドで標準入力が壊れている
とt2.cpp
が簡略化されているため、問題を簡単に説明したいと思います。とt2.cpp
をコンパイルした後
//t1.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "hello\n"
<< "world\n"
<< "ok ok\n";
return 0;
}
//t2.cpp
#include <iostream>
#include <limits>
using namespace std;
int main()
{
string str;
while(getline(cin,str)){
cout << str <<endl;
}
//cin.clear();
//flush the cin
//cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
char x;
cin >> x;
return 0;
}
。私はこのようにそれらを実行する./t1 | ./t2
。
問題が発生します。 cin >> x;
in t2.cpp
が失敗しました。私はキーボードから入力する機会がありません。
パイプコマンドはredirecting the STDIN_FILENO
で実装されているようです。同時に標準入力を禁止していますか?
私の厳しい要件を加えて、私はt2
.FOR例では、ユーザーと対話したい、シェルコマンド|
とt1
の出力からデータを取得し、私はSure to del?[y/n],and wait users's anwser.
本当にC++の質問ではありません。 https://unix.stackexchange.com/questions/103885/piping-data-to-a-processs-stdin-without-causing-eof-afterward – LogicStuff
私は正しい答えは "do "しかし、私はそれが何であるか分からない。 '/ dev/tty'から読み込みますか?それでは、私が「less」にパイプしているコマンドに、確実に入力を確実に送ることができますか? –