一尘不染

在C中检测是否输出到端子

linux

我正在为OS X和Linux编写一个C程序,并且我想根据是否将其输出到终端来调整输出。我知道我们已经在Shell脚本中介绍了如何执行此操作
但是,如何在C程序中执行此操作?


阅读 194

收藏
2020-06-03

共1个答案

一尘不染

用途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
2020-06-03