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

时间:2010-08-02 04:26:51

标签: ruby command-line process environment

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

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

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:4)

你最接近的是AFAIK,isatty()。但正如页面本身所说,没有什么可以保证人类正在控制终端。

答案 2 :(得分:0)

正如@Mitch在评论中写的那样,这对某些人也很有用:

  

对于那些来到这里寻找窗户的人,请尝试{。1}}获取.Net或System.Environment.UserInteractive获取win32,这将导致非交互式流程失败

相关问题