有没有办法检查外部数据是否通过管道传输到程序或程序是否自行运行
is there a way to check if external data is piped to a program or if program runs on its own?
即数据已由另一个程序提供,或者用户必须手动键入。我的意思是这两种状态:
dir /b /s *.* | myprogram
和
myprogram
在第二种情况下,程序将等待用户输入。有没有办法防止这种情况?
POSIX 有 isatty()
,而 Visual C++ 有 _isatty()
,如果文件描述符是终端或命令行,两者都将返回 true,例如 isatty(fileno(stdin))
.
是的。使用 GetStdHandle
获取STD_INPUT_HANDLE
,然后通过GetFileType
调用句柄来检查句柄在第一种情况下是 FILE_TYPE_PIPE
类型,还是在第二种情况下是FILE_TYPE_CHAR
类型。
相关文章:
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 如何使用C++确定应用程序是否已在窗口中启动?
- 如何查询以确定我的 MacOS/X 应用程序是否处于应用程序午睡模式?
- C++如何检查程序是否首次运行?
- 确定C++应用程序是否作为具有旧版支持的 UWP 应用运行
- 给定概念,SFINAE 帮助程序是否仍在规范中作为未弃用?
- Windows 和 Android 应用程序是否需要 SSL?
- 在不释放所有动态分配的资源的情况下结束程序是否有风险
- shared_ptr的删除程序是否存储在自定义分配器分配的内存中?
- 根据应用程序是否已自动化显示不同的 QML 文件
- 如何检查应用程序是否安装了 jni?
- 使用 IPC 共享内存的应用程序是否可以访问彼此的代码?
- 在 64 位 Windows 上运行的 32 位应用程序是否仍然需要使用 SAFESEH 进行编译
- 编译的程序是否有可能不包含实例化的模板类
- UMDF驱动程序是否可以写入文件
- 如何使用QT检查程序是否存在于路径中
- 程序是否可以在调用kill函数之前返回/终止
- 如何检查程序是否超过数据类型存储
- 如何检查应用程序是否在OpenOnload下运行
- 当一个对象试图访问它的某个属性时,程序是否可能发送Segfault