c - Stdin 来自键盘或文件

标签 c stdin

程序可以检测它的标准输入是 来自键盘输入与存在 从文件重定向?在 C 中?

最佳答案

是的,在大多数系统上。在 POSIX 系统(Linux、Mac OS X、BSD 等)上,您可以使用 isatty(3)文件描述符 0(标准输入)上的函数。在 Windows 上,您可以使用 _isatty .例如:

if(isatty(0))
{
    // standard input is a terminal device
}

请注意,许多程序使用 isatty 来改变它们的输出缓冲行为:如果标准输出是终端,则输出是行缓冲的(例如,在打印每个换行符后刷新),而如果标准输出不是终端,它是完全缓冲的(例如,仅当缓冲区已满、进程正常退出或流被应用程序显式刷新时才刷新)。

关于c - Stdin 来自键盘或文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708247/

相关文章:

c - 查找一个单词并替换文本文件中的整行

bash - 在程序开始时读取所有 stdin 会阻止在程序期间从 stdin 读取

c - 输入间隔直到 CTRL + D

c++ - 在 C++ 中使用 freopen 打开多个文件

c++ - GCC/g++ cout << 与 printf()

c - 在声明符外声明参数

c++ - C/C++ 如何在连续两次输入 Enter 后或在 2 个换行符后从 stdin 读取

用于标准输入测试的 Golang 模式

c - 为指向指针数组的指针赋值

c - 运行 ntpclient 时出错,阻塞在 recvfrom() 函数和 settimeofday() 返回 -1