2013-04-30 15 views
0

我无法理解执行exe的Perl脚本的一部分。使用open()在Perl中执行一个exe文件?

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

根据this我可以理解,它正在执行一个exe(可变$appl店的exe其ARGS沿着路径),但我不明白的部分2>&1。 AFAIK它不是我们exe所要求的arg,所以它必须是一些标准的约定。任何想法是什么? PS:我们的Perl有点旧,因此open()的语法较老。

+1

可能的重复[在bash shell中,什么是“2>&1”?](http://stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21) – 2013-04-30 09:30:51

回答

3

你可以看到的简要说明什么2>&1在这里:In the shell, what does " 2>&1 " mean?

基本上它是告诉命令行重定向任何错误消息EXE提高到标准输出whe重新perl脚本可以拿起输出。

没有这个,或者从命令行运行EXE时,通常可能会将错误引导到单独的输出(STDERR),以便将信息消息出现(STDOUT)。

+0

谢谢吉姆。从你的链接回答这个问题真棒! – 2013-04-30 09:24:51

+0

非常欢迎您。谢谢。 – Jim 2013-04-30 11:29:28

2

它重定向STDERRSTDOUT

在程序启动,与 流标准输入,标准输出,和stderr关联的整数文件描述符0,1,2

Unix File Descriptors

+0

谢谢阿伦,明白了! :) – 2013-04-30 09:25:15