posix_isatty
(PHP 4, PHP 5, PHP 7, PHP 8)
posix_isatty — Determine if a file descriptor is an interactive terminal
说明
posix_isatty(resource|int
$file_descriptor
): bool
Determines if the file descriptor file_descriptor
refers to a valid
terminal type device.
参数
-
fd
-
The file descriptor, which is expected to be either a file resource or an int. An int will be assumed to be a file descriptor that can be passed directly to the underlying system call.
In almost all cases, you will want to provide a file resource.
返回值
Returns true
if file_descriptor
is an open descriptor connected
to a terminal and false
otherwise.

User Contributed Notes 2 notes
hfuecks at phppatterns dot com ¶
18 years ago
Can be useful to determine whether output is being piped elsewhere, for PHP shell scripts, for example;
#!/usr/local/bin/php
<?php
if ( !posix_isatty(STDOUT) ) {
fwrite(STDOUT, "Invalid TTY\n");
exit(2);
}
fwrite(STDOUT, "Enter you name\n");
$name = fgets(STDIN);
fwrite(STDOUT,"Hello $name\n");
exit(0);
?>
If this script is like:
script.php > outfile
outfile will contain "Invalid TTY"
KEINOS ¶
1 year ago
It's quite complicated to understand its movements. But it determines if the file_descriptor is open AND connected to a terminal.
Thus, while receiving data from the STDIN, for example, it will return false.
This move is useful to optionally pipe STDIN to a PHP script, to avoid hanging when nothing is from STDIN.
<?php
// Simply echoes the contents from STDIN if any
// and "no stdin" if not.
echo (posix_isatty(STDIN)) ? 'no stdin' . PHP_EOL : file_get_contents('php://stdin');
?>
备份地址:http://www.lvesu.com/blog/php/function.posix-isatty.php