PHP 8.1.0 Released!

posix_isatty

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

posix_isattyDétermine si un pointeur de fichier est un terminal interactif

Description

posix_isatty(resource|int $file_descriptor): bool

Détermine si le pointeur de fichier file_descriptor se réfère à un type de terminal de périphérique valide.

Liste de paramètres

fd

Le descripteur de fichier, qui doit être soit une ressource de fichier, soit un entier. Un entier est supposé être un descripteur de fichier qui peut être passé directement à l'appel système sous-jacent.

Dans tous les autres cas, vous devez fournir une ressource de fichier.

Valeurs de retour

Retourne true si file_descriptor est un pointeur de fichier connecté à un terminal, false sinon.

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
1
hfuecks at phppatterns dot com
17 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
10 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