19
我正在爲OS X和Linux編寫一個C程序,我想根據它是否要去終端來調整輸出。我知道我們已經介紹瞭如何在shell腳本中做到這一點,例如在這裏:如果輸出到終端,用C檢測
Detecting the output stream type of a shell script
但是我怎麼做到這一點的C程序?
我正在爲OS X和Linux編寫一個C程序,我想根據它是否要去終端來調整輸出。我知道我們已經介紹瞭如何在shell腳本中做到這一點,例如在這裏:如果輸出到終端,用C檢測
Detecting the output stream type of a shell script
但是我怎麼做到這一點的C程序?
使用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
if (isatty (1))
fprintf (stdout, "Outputting to a terminal.");
else
fprintf (stdout, "Not outputting to a terminal.");
你能解釋一個稍微深一點? 這個功能真的檢查了什麼? 真正的意思是「連接到終端」? – xolodec 2014-02-08 08:13:43