从 perl 主脚本中分离 .exe

Posted

技术标签:

【中文标题】从 perl 主脚本中分离 .exe【英文标题】:detach .exe from perl main script 【发布时间】:2011-02-27 22:14:56 【问题描述】:

我被困在这里..:( 我正在尝试从 Perl 脚本执行 temp.exe 文件。

我尝试使用以下方法:

1)

         $pid=  open( CMD, "| exp.exe  > C:\exp_out.txt" );
         print CMD "arg1\n";
         print CMD "arg2\n";
         print CMD "arg3\n";

现在这个 exp.exe 一直在后台运行,没有任何问题。但是如果我想关闭它并重新启动它,它会启动 exp.exe 但不向 exp.exe 提供输入参数

结束:

         system("taskkill /F /T /pid $pid");` 

现在这是 2 个子例程打开和关闭的一部分...

我也试过 Open2;Win32::Process; Open2 卡在 exp.exe 和 Win32::Process 我不知道如何传递多个参数。

【问题讨论】:

您的格式看起来像是您的 perl 脚本实际上调用了刻度线中的每一行。这是你运行它的方式,还是格式不正确? 【参考方案1】:

尝试在命令行中传递参数。打印到 CMD 就像打开管道后输入文本一样。如果这是您想要的,那么您的程序 exp.exe 需要期待来自 STDIN 的输入

$pid = open(CMD, "| exp.exe arg1 arg2 arg3 > file.txt");
#do your work here
close(CMD)

【讨论】:

以上是关于从 perl 主脚本中分离 .exe的主要内容,如果未能解决你的问题,请参考以下文章

如何列出脚本中分离的进程?

把perl脚本编译成exe

从线程中分离对象

无法使用 C# 运行 perl 脚本

从 IP 地址中分离出最后一个八位字节并将其放入变量中

脚本中如何加入选项