Perl,在另一个窗口中运行.exe并获取PID

时间:2016-08-04 00:17:24

标签: windows perl parallel-processing

我的目录包含:

  • script.pl
  • APP.EXE

在我的perl脚本中,我想在另一个shell中运行app.exe,如下所示:

  • 我运行script.pl
  • shell打开并执行perl脚本中的命令
  • 一段时间后,perl脚本运行app.exe(并获取app.exe PID)
  • 新的shell打开并执行app.exe。同时,perl脚本继续执行
  • 过了一会儿,perl脚本会停止app.exe(带PID)

我的问题:

  1. 如何在“后台模式”下执行另一个shell窗口中的app.exe ? (perl脚本执行和app.exe是'并行')
  2. 当perl脚本执行时,如何获取app.exe的PID?
  3. 谢谢:)

1 个答案:

答案 0 :(得分:0)

我是perl的新手,但我认为你可以解决这个问题。

我的回答:

问题1 :您可以测试两种方式。

案例1:直接使用系统命令:

system(“start app.exe”);

案例2: 使用launch命令创建一个批处理文件,然后使用perl执行。

launchAPP.bat

@echo off
start app.exe

Perl代码:

system("launchAPP.bat");

问题2 :您也可以测试两种方式。

取决于系统的架构。

X32: CPAN中有一个可以满足您代码的库。它使用Windows C库来检索信息。

以下是CPAN库的链接: Win32::Process::List

x64或x32:

您可以使用wmic:

wmic process where (Name like '%%app.exe%%' and CommandLine like '%%example%%') get ProcessId | more >> pid.txt

在perl:

system(wmic process where (Name like '%%app.exe%%' and CommandLine like '%%example%%') get ProcessId | more >> pid.txt);

它会创建一个文件,其中包含您要提取的进程的pid,您可以轻松地使用perl进行读取。

我希望这会有所帮助。