Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果输出到终端,则在C中检测_C_Linux_Macos - Fatal编程技术网

如果输出到终端,则在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,因此可以执行以下

我正在为OSX和Linux编写一个C程序,我想根据它是否要发送到终端来调整输出。我知道我们已经在shell脚本中介绍了如何执行此操作,例如:

但是如何在C程序中实现呢?

使用
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.");