Stdin来自键盘或文件

时间:2012-05-22 18:54:07

标签: c stdin

程序可以检测它是否是stdin 来自键盘输入与存在 从文件重定向?在c?

1 个答案:

答案 0 :(得分:7)

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

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

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