有没有办法检查外部数据是否通过pipe道连接到程序或程序是否自行运行?

也就是说,数据已经由其他程序提供,或者用户必须手动input。 我的意思是这两个国家:

dir /b /s *.* | myprogram 

 myprogram 

在第二种情况下,程序将等待用户input。 有没有办法来防止呢?

Solutions Collecting From Web of "有没有办法检查外部数据是否通过pipe道连接到程序或程序是否自行运行?"

POSIX具有isatty() ,而Visual C ++具有_isatty() ,如果文件描述符是终端或命令行,例如isatty(fileno(stdin)) ,则两者都将返回true。

是。 使用GetStdHandle来获取STD_INPUT_HANDLE ,然后通过调用GetFileType来检查句柄是第一种情况下的FILE_TYPE_CHAR类型还是第二种情况下的FILE_TYPE_CHAR