Can a program detect if it's stdin is coming from keyboard input vs. being redirected from a file? in c ?
问问题
481 次
1 回答
7
是的,在大多数系统上。在 POSIX 系统(Linux、Mac OS X、BSD 等等)上,您可以isatty(3)
在文件描述符 0(标准输入)上使用该函数。在 Windows 上,您可以使用_isatty
. 例如:
if(isatty(0))
{
// standard input is a terminal device
}
请注意,许多程序用于isatty
更改其输出缓冲行为:如果标准输出是终端,则输出是行缓冲的(例如,在每个换行符打印后刷新),而如果标准输出不是终端,则它是完全缓冲的(例如仅当缓冲区已满、进程正常退出或应用程序显式刷新流时才会刷新它)。
于 2012-05-22T18:57:15.333 回答