是否有一种标准(ish)POSIX方式来确定我的进程(我现在正在将其写为Ruby脚本;但我对多种环境感到好奇,包括Node.js和ISO C命令行应用程序)正在交互式终端中运行,而不是像cron,或从其他工具执行,或......等等。
具体来说,我需要在某些情况下获取用户输入,如果确定不可能(即由cron运行),我需要致命地失败。我可以使用环境变量执行此操作,但如果可以的话,我更喜欢更标准的东西。
答案 0 :(得分:16)
我总是使用$stdout.isatty
来检查这一点。其他方法可能包括检查ENV['TERM']
的值或使用ruby-terminfo gem。
答案 1 :(得分:4)
你最接近的是AFAIK,isatty()。但正如页面本身所说,没有什么可以保证人类正在控制终端。
答案 2 :(得分:0)
正如@Mitch在评论中写的那样,这对某些人也很有用:
对于那些来到这里寻找窗户的人,请尝试{。1}}获取.Net或
System.Environment.UserInteractive
获取win32,这将导致非交互式流程失败