我试图确定,在Linux的Perl脚本中,它是否在终端中运行。如何检查Perl脚本是否在终端中运行?
也就是说,我需要的代码:
- 返回true运行
./myscript.pl | less
甚至./myscript.pl </dev/null >/dev/null 2>/dev/null
- 返回false时,在cron运行时,在命令行
- 也返回true时,只需运行工作或作为CGI脚本
特别是因为第二个项目符号,我不能使用-t STDOUT
和变体,还有IO::Interactive是没有用的。
该信息确实可用。如果我运行ps
,它会在TTY
列中显示pts/2
这样的条目,即使我在作为cron作业或CGI脚本运行时运行./myscript.pl </dev/null >/dev/null 2>/dev/null
和?
。
有没有一种优雅的方式来确定这在Perl脚本?我宁愿不必解析ps
的输出。
我觉得perl可以使用'isatty(3)'函数。 – Keith
'isatty'存在于POSIX模块中,是的,但是像'-t'一样检查文件句柄是否连接到tty。不是我所需要的... – mscha
函数[ctermid](http://pubs.opengroup.org/onlinepubs/009695399/functions/ctermid.html)是否可用? – Keith