Обнаруживать, является ли stdin устройством tty (терминал) или трубой в PHP?

Я написал php script. Я хочу, чтобы оно отображало справочное сообщение при вызове со стандартным вводом, подключенным к устройству tty (терминалу), перед чтением и выполнением в интерактивном режиме, но не отображалось при вызове с файлом или потоком из канала в качестве стандартного ввода.

Есть ли способ обнаружить это из PHP?

Ответ 1

Используйте posix_isatty.

Эта функция принимает как дескриптор файла (целое число), так и поток PHP. Если он получает поток PHP, он автоматически пытается произнести его, чтобы получить файловый дескриптор и использовать его вместо этого.