我在perldoc中读到-t文件操作符用于决定是否向tty打开文件句柄.然后我读了一个tty是什么,从我的理解,这是一个终端的旧术语?
然而,我的主要问题是此代码用于:
if(-t STDERR) {
die "some warning/error message here"
}
Run Code Online (Sandbox Code Playgroud)
我想我真的不明白"将文件句打开到tty"意味着什么.这是否意味着该文件句柄的特定输出出现在tty - 或终端上?除了终端之外,还可以参考一些东西吗?
此代码想要声明标准错误被重定向到文件.好跑
perl the_script.pl
Run Code Online (Sandbox Code Playgroud)
会触发die通话,但是
perl the_script.pl 2> error.log
Run Code Online (Sandbox Code Playgroud)
不会.
这是一种unix设备.控制台显示为程序的ttys,因此该语句基本上读作
"如果STDERR被发送到控制台,......"
但并不完全.我们不是在谈论物理设备,而是/dev/tty*.因此,程序可能假装成终端.例如,Expect使用IO :: Pty来执行此操作.
STDERR也可以是普通文件,管道或套接字.-t这些都是假的.
script 2>foo # Plain file
script 2>&1 | cat # Pipe
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |