posix_isatty

(PHP 4, PHP 5, PHP 7, PHP 8)

posix_isatty确定文件描述符是否为交互式终端

描述

posix_isatty(资源|整数 $file_descriptor): 布尔值

确定文件描述符 file_descriptor 是否引用有效的终端类型设备。

参数

file_descriptor

文件描述符,预期为文件 资源整数整数 将被假定为可以直接传递给底层系统调用的文件描述符。

返回值

如果 file_descriptor 是一个连接到终端的打开描述符,则返回 true,否则返回 false

变更日志

版本 描述
8.3.0 现在针对遵循通常的 PHP 类型强制语义的整数强制转换引发类型错误 E_WARNING

参见

添加笔记

用户贡献的笔记 2 个笔记

2
hfuecks at phppatterns dot com
20 年前
对于 PHP shell 脚本,例如,确定输出是否正在被管道传输到其他地方很有用;

#!/usr/local/bin/php
<?php
if ( !posix_isatty(STDOUT) ) {
fwrite(STDOUT, "无效的 TTY\n");
exit(
2);
}
fwrite(STDOUT, "输入您的姓名\n");
$name = fgets(STDIN);
fwrite(STDOUT,"您好 $name\n");
exit(
0);
?>

如果此脚本类似

script.php > outfile

outfile 将包含 "无效的 TTY"
1
KEINOS
3 年前
理解它的运行机制相当复杂。但它确定文件描述符是否已打开且连接到终端。

因此,例如,在从 STDIN 接收数据时,它将返回 false。

此操作对于选择性地将 STDIN 管道传输到 PHP 脚本很有用,以避免在 STDIN 中没有数据时挂起。

<?php

// 如果有,简单地回显 STDIN 中的内容
// 如果没有,则回显 "no stdin"。
echo (posix_isatty(STDIN)) ? 'no stdin' . PHP_EOL : file_get_contents('php://stdin');
?>
To Top