2011-03-05 20 views
2

可能重复:
Detect if stdin is a terminal or pipe in C/C++/Qt?期待输入从给std :: cin(Unix的C++)

我正在写期望的数据,可以是命令行参数的命令行应用程序,或来自cin。

有没有办法检查用户是否在应用程序中输入了一些数据($ ./myapp < test.txt),如果没有,只显示键盘输入提示?

如果我正在检查!cin.good()/ cin.eof()等,则提示不会出现。

+0

可能的重复:http://stackoverflow.com/questions/1312922/detect-if-stdin-is-a-terminal-or-pipe-in​​-c-c-qt – 2011-03-05 12:09:32

回答

6
isatty(STDIN_FILENO) 

将返回标准输入是否是终端(tty),即交互式。

0

也许你可以用fstat(2)和S_ISFIFO做些什么?