将系统命令的输出捕获到文本文件的最佳方法?
我试图捕获使用 Perl 的 system
函数来执行系统命令的输出并将其重定向到文件的输出,但由于某种原因,我没有获得完整的输出。
我正在使用以下方法:
system("example.exe >output.txt");
这段代码有什么问题,或者是否有其他方法可以做同样的事情?
I’m trying to capture output from using Perl’s system
function to execute and redirect a system command’s ouptut to a file, but for some reason I’m not getting the whole output.
I’m using the following method:
system("example.exe >output.txt");
What’s wrong with this code, or is there an alternative way of doing the same thing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
与 MVS 的答案相同,但现代且安全。
则更容易
如果您同时需要 STDOUT 和 STDERR,
Same as MVS's answer, but modern and safe.
easier
if you need both STDOUT and STDERR
使用 plain > 重定向输出只会捕获 STDOUT。如果您还想捕获 STDERR,请使用 2>&1:
有关更多详细信息,请参阅 Perlmonks
Redirecting the output with plain > will only catch STDOUT. If you also want to catch STDERR, use 2>&1:
For more details, see Perlmonks
当你想要永久重定向输出时,你可以这样做:
When you want recirect output permanently, you can do:
您还可以尝试让 Perl 捕获输出:
You could also try having Perl capture the output instead:
我发现这种方式是一种非常好的方法:
感谢 DWGuru 对 Capture::Tiny 的评论::扩展。 :-)
I find this way a very nice way to do it:
Thanks DWGuru for commenting on Capture::Tiny::Extended. :-)
这是有效的:
在 C 代码中,您可以使用以下行来捕获所需的输出:
This works:
In C code, you could have the below line to capture the required output: