程序如何知道其输出将重定向?

时间:2013-01-14 09:06:50

标签: linux shell command-line

当我使用cURL时,我发现似乎cURL知道它自己的输出是重定向,还是输入另一个程序。

以下是两个不同的命令:

curl http://www.google.com/

输出将是:

<HTML><HEAD>......blah, blah......</HEAD></HTML>

但如果我使用重定向或管道,cURL将打印其下载状态。

curl http://www.google.com/ | xargs echo

输出结果将是:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   376  100   376    0     0   2729      0 --:--:-- --:--:-- --:--:--  5295
<HTML><HEAD>......blah, blah......</HEAD></HTML>

我的问题是:cURL如何知道其打印是否会重定向?

1 个答案:

答案 0 :(得分:2)

isatty(3)会告诉您FD是否连接到TTY。