如何确定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)