Подтвердить что ты не робот

Как определить, выполняется ли мой процесс в интерактивном режиме?

Существует ли стандартный способ (ish) POSIX для определения моего процесса (Im пишет это как Ruby script прямо сейчас, но Im любопытно для нескольких сред, включая Node.js и приложения командной строки ISO C ) запускается в интерактивном терминале, в отличие от, скажем, cron, или выполнения от другого инструмента, или... так далее и т.д.

В частности, мне нужно получить пользовательский ввод в определенных ситуациях, и мне нужно потерпеть неудачу, если это невозможно сделать возможным (т.е. выполняться cron.) Я могу сделать это с переменной окружения, но Id предпочитает что-то более стандартное -ий, если смогу.

4b9b3361

Ответ 1

Я всегда использовал $stdout.isatty, чтобы проверить это. Другие подходы могут включать проверку значения ENV['TERM'] или использование ruby-terminfo gem.

Ответ 2

Ближе всего вы получите AFAIK, isatty(). Но, как говорит сама страница, ничто не гарантирует, что человек контролирует терминал.