0

我无法理解正在执行 exe 的 Perl 脚本的一部分。

open(SYSTEM, "$appl 2>&1 |") || die "$!: $appl";

据此可以理解它正在执行一个exe(变量$appl存储exe的路径及其args),但我不明白这部分2>&1。AFAIK 它不是我们的 exe 所需的 arg,因此它必须是一些标准约定。知道那是做什么的吗?

PS:我们的 Perl 有点旧,因此 open() 的语法较旧。

4

2 回答 2

3

您可以看到2>&1这里的简要说明:在 shell 中,“2>&1”是什么意思?

基本上,它告诉命令行将 EXE 引发的任何错误消息重定向到 perl 脚本可以获取输出的标准输出。

如果没有这个,或者从命令行运行 EXE 时,它通常会将错误定向到单独的输出 (STDERR) 到出现信息消息的输出 (STDOUT)。

于 2013-04-30T09:09:04.360 回答
2

它正在重定向STDERRSTDOUT.

在程序启动时,与流 stdin、stdout 和 stderr 关联的整数文件描述符是 0、1 和 2

Unix 文件描述符

于 2013-04-30T09:02:40.740 回答