尝试通过perl运行一些命令。其中一个命令需要在中间按Enter键才能完成! 我是第一次尝试使用java但没有这样做我认为它可能在perl中但不能通过!
$dir = "C:\\bip_autochain\\scripts";
chdir($dir) or die("Can't change to dir \n");
system("lcm_cli.bat -lcmproperty C:\\pl\\LCMBiar_Import.property");
sleep(5);
system("\n");
突出显示的系统命令需要在一段时间后按5秒后按Enter键。 我的代码不能用于此目的。
答案 0 :(得分:1)
如果要将数据从Perl脚本发送到在子进程中启动的命令,则需要在启动时将文件句柄传送到程序中。然后,您等待所需的时间并使用print
(或printf
)发送数据。
有一个巨大的警告。如果外部程序直接打开控制台终端进行输入而不从stdin读取(即提示输入密码),则可能无法将数据发送到程序。
对于程序从stdin读取的标准情况:
$dir = "C:\\bip_autochain\\scripts";
chdir($dir) or die("Can't change to dir \n");
open(CMD, "|lcm_cli.bat -lcmproperty C:\\pl\\LCMBiar_Import.property");
# ^
# vertical bar, aka "pipe" symbol
sleep(5);
print CMD "\n";
...
close(CMD); -- when you are done sending data
命令开头的管道符号是open
的一种特殊形式,用于将CMD
文件句柄设置为命令stdin
。这是des in the documentation