Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定PHP CLI脚本';的输出正在通过管道传输到另一个命令?_Php - Fatal编程技术网

如何确定PHP CLI脚本';的输出正在通过管道传输到另一个命令?

如何确定PHP CLI脚本';的输出正在通过管道传输到另一个命令?,php,Php,可能重复: 我试图确定PHP命令行脚本上的STDOUT资源是否正在通过管道传输到另一个命令,以便适当地显示表格数据(如果输出是直接到终端的,则将表格单元格包装在+----+边框中看起来不错;但如果尝试使用awk或其他命令检查该数据,则情况并非如此。) 在找到之后,我尝试使用stream\u get\u meta\u data()和PHP手册中可以找到的所有其他对流进行操作的函数来检查STDOUT资源,但是在任何情况下,无论资源是否通过管道传输到另一个进程,它看起来都完全相同 有什么方法可以在P

可能重复:

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

在找到之后,我尝试使用
stream\u get\u meta\u data()
和PHP手册中可以找到的所有其他对流进行操作的函数来检查STDOUT资源,但是在任何情况下,无论资源是否通过管道传输到另一个进程,它看起来都完全相同

有什么方法可以在PHP中找到这一点吗?

假设您有POSIX扩展,您可以使用它(您可能有):

如果这是真的,那么就不是向管道输出。
isatty
是在
C
程序和其他程序中执行此操作的常用方法


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

这很有效!这并不完全是我想要的,因为我仍然希望在脚本输出中包含一些图形元素,例如,如果输出被重定向到文件。但它至少允许对脚本输出进行一些粗略的控制。和或的可能重复
posix_isatty(STDOUT)