我正在为OS X和Linux编写一个C程序,我想根据它是否转到终端来调整输出。我知道我们已经介绍了如何在shell脚本中执行此操作,例如这里:
Detecting the output stream type of a shell script
但是我如何在C程序中执行此操作?
答案 0 :(得分:41)
使用isatty()
:
$ man isatty
ISATTY(3) Linux Programmer's Manual ISATTY(3)
NAME
isatty - does this descriptor refer to a terminal
SYNOPSIS
#include <unistd.h>
int isatty(int desc);
DESCRIPTION
returns 1 if desc is an open file descriptor connected to a terminal
and 0 otherwise.
由于stdout
始终是文件描述符1,因此您可以执行以下操作:
if(isatty(1))
// stdout is a terminal
答案 1 :(得分:5)
if (isatty (1))
fprintf (stdout, "Outputting to a terminal.");
else
fprintf (stdout, "Not outputting to a terminal.");