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

Есть ли стандарт (выход) POSIX способ определить, если мой процесс (я пишу это как сценарий Ruby прямо сейчас; но мне любопытно для нескольких сред, включая Node.js и приложения командной строки ISO C) выполняется в интерактивном терминале, в противоположность, скажем, крону, или выполнению от другого инструмента или … так на и т.д.

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

13
задан ELLIOTTCABLE 2 August 2010 в 04:26
поделиться

2 ответа

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

16
ответ дан 1 December 2019 в 22:54
поделиться

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

4
ответ дан 1 December 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: