つまり、データはすでに別のプログラムによって提供されているか、ユーザーが手動で入力する必要があります。私はこれらの2つの状態を意味します:
dir /b /s *.* | myprogram
と
myprogram
2番目のケースでは、プログラムはユーザー入力を待機します。それを防ぐ方法はありますか?
POSIXにはがisatty()
ありますが、Visual C ++にはが_isatty()
あります。ファイル記述子が端末またはコマンドラインである場合、どちらもtrueを返しますisatty(fileno(stdin))
。
はい。を使用GetStdHandle
してを取得し、ハンドルを呼び出して、最初のケースまたは 2番目のケースSTD_INPUT_HANDLE
のタイプのハンドルであることを確認します。FILE_TYPE_PIPE
FILE_TYPE_CHAR
GetFileType