如何确定PHP CLI脚本的输出是否通过管道传递到另一个命令?

时间:2012-09-10 22:44:54

标签: php

  

可能重复:
  Can PHP detect if its run from a cron job or from the command line?

我正在尝试确定PHP命令行脚本上的STDOUT资源是否通过管道传输到另一个命令,以便正确显示表格数据(如果输出是直接到终端,它看起来很好将表格单元格包裹在+-----+边框中;但如果尝试使用awk或其他命令检查该数据则不会。)

在找到this answer后,我尝试用stream_get_meta_data()检查STDOUT资源以及我在PHP手册中可以找到的所有其他函数,这些函数在流上运行,但在每种情况下,资源都是看它是否被管道传输到另一个进程看起来完全一样。

有没有办法在PHP中找到它?

1 个答案:

答案 0 :(得分:4)

假设你有POSIX扩展名(你可能会这样做),你可以使用posix_isatty

posix_isatty(STDOUT)

如果是,那么您没有输出到管道。 isatty是在C程序和其他程序中执行此操作的常用方法。

请注意,这并不会检查它是否专门输出到管道,只是它是否输出到交互式终端(管道不是一个)。