posix_isatty

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

posix_isattyErmittelt, ob ein Dateideskriptor ein interaktives Terminal ist

Beschreibung

posix_isatty ( resource|int $file_descriptor ) : bool

Ermittelt, ob der Dateideskriptor file_descriptor auf ein gültiges terminalartiges Gerät verweist.

Parameter-Liste

fd

Der Datei-Deskriptor, welcher entweder eine Datei-resource oder ein int sein sollte. Ist dies ein int so wird davon ausgegangen, dass es sich um einen Dateideskriptor handelt, welcher direkt an die zugrunde liegenden Systemaufrufe übergeben werden kann.

In fast allen Anwendungsfällen sollte eine Date-resource angegeben werden.

Rückgabewerte

Gibt true zurück, falls file_descriptor ein offener Deskriptor ist, der mit einem Terminal verbunden ist, und andernfalls false.

Siehe auch

add a note add a note

User Contributed Notes 2 notes

up
1
hfuecks at phppatterns dot com
16 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"
up
0
KEINOS
3 months 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');
?>
To Top