如果输出到终端,则在C中检测
我正在为OSX和Linux编写一个C程序,我想根据它是否要发送到终端来调整输出。我知道我们已经在shell脚本中介绍了如何执行此操作,例如: 但是如何在C程序中实现呢?使用如果输出到终端,则在C中检测,c,linux,macos,C,Linux,Macos,我正在为OSX和Linux编写一个C程序,我想根据它是否要发送到终端来调整输出。我知道我们已经在shell脚本中介绍了如何执行此操作,例如: 但是如何在C程序中实现呢?使用isatty(): $man isatty ISATTY(3)Linux程序员手册ISATTY(3) 名称 isatty-此描述符是否引用终端 提要 #包括 int isatty(int desc); 描述 如果desc是连接到终端的打开文件描述符,则返回1 否则为0。 由于stdout始终是文件描述符1,因此可以执行以下
isatty()
:
$man isatty
ISATTY(3)Linux程序员手册ISATTY(3)
名称
isatty-此描述符是否引用终端
提要
#包括
int isatty(int desc);
描述
如果desc是连接到终端的打开文件描述符,则返回1
否则为0。
由于stdout
始终是文件描述符1,因此可以执行以下操作:
if(isatty(1))
// stdout is a terminal
你能再解释一下吗?这个函数真正检查的是什么?什么是连接到终端的
?@PavelShvechikov它意味着文件描述符与被认为是终端的设备相关联。看见
if (isatty (1))
fprintf (stdout, "Outputting to a terminal.");
else
fprintf (stdout, "Not outputting to a terminal.");