Есть ли стандарт (выход) POSIX способ определить, если мой процесс (я пишу это как сценарий Ruby прямо сейчас; но мне любопытно для нескольких сред, включая Node.js и приложения командной строки ISO C) выполняется в интерактивном терминале, в противоположность, скажем, крону, или выполнению от другого инструмента или … так на и т.д.
А именно, я должен получить ввод данных пользователем в определенных ситуациях, и я должен перестать работать фатально, если это определенно не возможно (т.е. быть выполненным кроном.) Я могу сделать это с переменной среды, но я предпочел бы что-то больше стандартного выхода, если я могу.
Я всегда использовал $stdout.isatty
для проверки этого. Другие способы могут включать проверку значения ENV['TERM']
или использование ruby-terminfo gem.
Ближайшее, что вы получите, AFAIK, - это isatty () . Но, как написано на самой странице, ничто не гарантирует, что терминал контролирует человек.