期待来自 std::cin (Unix C++) 的输入
我正在编写一个命令行应用程序,它期望数据作为命令行参数或来自 cin。
有没有办法检查用户是否在应用程序中传输了一些数据($ ./myapp < test.txt),并且仅在没有时显示键盘输入提示?
如果我正在检查 !cin.good() / cin.eof() 等,则提示永远不会出现。
Possible Duplicate:
Detect if stdin is a terminal or pipe in C/C++/Qt?
I'm writing a command line application that expects data as either a command line argument, or from cin.
Is there a way to check if the user piped some data in the application ($ ./myapp < test.txt), and only display a prompt for keyboard input if not?
If I'm checking for !cin.good() / cin.eof() etc., the prompt will never appear.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将返回标准输入是否是终端(tty),即交互式。
will return whether standard input is a terminal (tty), i.e. interactive.
也许你可以用 fstat(2) 和 S_ISFIFO 做点什么?
Perhaps you can do something with fstat(2) and S_ISFIFO?