是的,在大多数系统上。在POSIX系统(Linux,Mac OS X,BSD以及更多)上,您可以在文件描述符0(标准输入)上使用isatty(3)
函数。在Windows上,您可以使用_isatty
。例如:
if(isatty(0))
{
// standard input is a terminal device
}
请注意,许多程序使用isatty
来改变它们的输出缓冲行为:如果标准输出是终端,则输出是行缓冲的(例如,它在每个换行符打印后刷新),而如果是标准输出输出不是终端,它是完全缓冲的(例如,只有当缓冲区变满,进程正常退出或者应用程序明确刷新流时才刷新它。)