メッセージを出力するプログラムを作成し、ユーザーの入力を待ってメッセージを再度表示します。下の簡単な例はそれを示しています。このプログラムは、 'prog | tr 'a-z' 'A-Z'。最後の印刷だけが 'tr' a-z '' A-Z 'によって処理されるべきです。シェル作成パイプをリダイレクトする方法
int main()
{
char name[99];
printf ("Your name: ");
scanf ("%98s", name);
printf ("Your name is: %s\n", name);
return 0;
}
私はpipe、dup、dup2でたくさん試しましたが、これまでのところ何もできませんでした。誰にも私の問題を解決するためのアイデアはありますか?さらにいくつかの研究の後
fprintf (stderr, "Your name: \n");
感謝。私はstderrについて考えましたが、私はstderrの誤用を避けることができると期待していました。 –
@NickBendnerなぜ「リダイレクトするシェル作成パイプ」をしようとしていますか? – jdarthenay
私のprogはユーザーの入力を要求する場合があります。それ以前には、なぜ入力が必要なのか、どのような入力が必要なのかというメッセージを出力します。ユーザーがパイプでprogを開始しない限り、すべてうまく動作します。ユーザーがそうした場合、stdoutはバッファされパイプにリダイレクトされるため、メッセージは出力されません。ユーザーはプロンプトしか表示されませんが、なぜ今何をするのかはわかりません。私の考えは、パイプを中断し、メッセージを印刷し、ユーザーの入力を取得し、パイプを再開することでした。 –