perl - 如何从 Perl 脚本捕获系统命令的标准输入和标准输出?

标签 perl ipc

在 Perl 脚本的中间,有一个我想要执行的系统命令。我有一个字符串,其中包含需要输入 stdin 的数据(该命令只接受来自 stdin 的输入),我需要捕获写入 stdout 的输出。我查看了在 Perl 中执行系统命令的各种方法,以及 open function 似乎是我所需要的,只是看起来我只能捕获 stdin 或 stdout,而不能同时捕获两者。

目前,似乎我最好的解决方案是使用 open ,将 stdout 重定向到临时文件,并在命令完成后从文件中读取。有更好的解决方案吗?

最佳答案

IPC::Open2/3 很好,但我发现通常我真正需要的是 IPC::Run3 ,它以最小的复杂性很好地处理了简单的情况:

use IPC::Run3;    # Exports run3() by default

run3( \@cmd, \$in, \$out, \$err );

该文档将 IPC::Run3 与其他替代方案进行了比较。即使您不决定使用它,也值得一读。

关于perl - 如何从 Perl 脚本捕获系统命令的标准输入和标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78091/

相关文章:

linux - 代理必须指定为绝对URI; '192.168.3.10' 不在/usr/share/perl/5.26/CPAN/FTP.pm 第 355 行

perl - 我无法理解以下 Perl 代码

perl - 如何随机采样文件的内容?

c - 如何从c中的POSIX消息队列中删除或清除所有消息?

android 从 AIDL 绑定(bind)服务返回 "live"对象

javascript - 从外部控制 Google Chrome

windows - Perl:获取当前光标图标/类型

regex - 如何用 Perl 中的计算表达式替换?

android - Messenger Service 可以用于跨应用程序 IPC 吗?

perl - 信号干扰管道通信的方式有哪些?