如何确定我的进程是否以交互方式运行?

ELL*_*BLE 13 ruby environment command-line process

是否有一种标准(ish)POSIX方式来确定我的进程(我现在正在将其写为Ruby脚本;但我很好奇多个环境,包括Node.js和ISO C命令行应用程序)正在在交互式终端中运行,而不是像cron,或从其他工具执行,或......等等.

具体来说,我需要在某些情况下获取用户输入,如果确定不可能(即由cron运行),我需要致命地失败.我可以使用环境变量做到这一点,但我更喜欢更标准的东西 -是的,如果可以的话.

Art*_*ken 16

我总是习惯$stdout.isatty检查这个.其他方法可能包括检查ruby-terminfo gem 的值ENV['TERM']或使用ruby-terminfo gem.