有没有办法检查外部数据是否通过管道传输到程序或程序是否独立运行?

时间:2012-05-13 20:05:00

标签: c++ windows console

即数据已由其他程序提供,或者用户必须手动输入。 我的意思是这两种状态:

dir /b /s *.* | myprogram

myprogram

在第二种情况下,程序将等待用户输入。有没有办法防止这种情况?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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