0

我正在尝试从 perl 脚本执行 C# 4.0 控制台应用程序并尝试捕获应用程序的输出。C# 应用程序是一个多线程应用程序,但它使用普通的 Console.WriteLine() 函数将输出写入控制台。

为了获取输出,我使用 perl 中的 `` 方法:

my @commands = `app.exe param1 param2`

但是当我运行脚本时出现错误:

Unhandled Exception: System.IO.IOException: The handle is invalid.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.Console.SetCursorPosition(Int32 left, Int32 top)
   at Netapp.CmDownload.Processor.DownloadProcessor.Start(String[] args)
   at Netapp.CmDownload.CmDownload.Main(String[] args)

终止应用程序。

注意:C# 应用程序是在 .Net Framework 4.0 上运行的 64 位应用程序,我尝试使用活动 perl 64 位和 32 位版本运行脚本,但没有任何效果。

4

1 回答 1

3

问题是您的应用程序正在尝试以相对高级的方式使用控制台 - 设置光标位置。在这种情况下,您实际上并没有控制台,您只有管道输出......所以没有控制台句柄,并且SetCursorPosition失败了。

查看是否有任何命令行选项可以关闭高级控制台处理。(如果是您自己的应用程序,请添加一个 :)

于 2014-04-08T21:35:48.530 回答