问题
That is the data is already provided by another program, or user must type it manually. I mean these two states:
dir /b /s *.* | myprogram
and
myprogram
In second case the program would be waiting for user input. Is there a way to prevent that ?
回答1:
POSIX has isatty()
, whereas Visual C++ has _isatty()
, both of which will return true if a file descriptor is a terminal or command line, e.g. isatty(fileno(stdin))
.
回答2:
Yes. Use GetStdHandle
to get the STD_INPUT_HANDLE
and then check that the handle is of the type FILE_TYPE_PIPE
in the first case or FILE_TYPE_CHAR
in the second case by calling GetFileType
on it.
来源:https://stackoverflow.com/questions/10574797/is-there-a-way-to-check-if-external-data-is-piped-to-a-program-or-if-program-run