posix_isatty

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

posix_isattyОпределяет является ли файловый дескриптор интерактивным терминалом

Описание

posix_isatty(resource|int $file_descriptor): bool

Определяет является ли файловый дескриптор file_descriptor ссылкой на валидный терминал.

Список параметров

file_descriptor

Файловый дескриптор, который ожидается в виде или ресурса resource или целого числа int. Под int подразумевается файловый дескриптор, который можно передать непосредственно в базовый системный вызов.

Возвращаемые значения

Возвращает true если file_descriptor является открытым файловым дескриптором, связанным с терминалом и false в остальных случаях.

Список изменений

Версия Описание
8.4.0 Устанавливается errno (номер ошибки) EBADF, если переданный файловый дескриптор/поток недействителен.
8.3.0 Ошибки уровня E_WARNING теперь выдаются при преобразованиях целых чисел в соответствии с обычной семантикой преобразования типов PHP.

Смотрите также

  • posix_ttyname() - Определяет имя терминального устройства
  • stream_isatty() - Проверяет, относится ли поток к терминальному устройству TTY

Добавить

Примечания пользователей 2 notes

up
1
hfuecks at phppatterns dot com
21 years ago
Can be useful to determine whether output is being piped elsewhere, for PHP shell scripts, for example;#!/usr/local/bin/php<?phpif ( !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 > outfileoutfile will contain "Invalid TTY"
up
0
KEINOS
4 years 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