2016-08-04 7 views
0

を取得:私のperlスクリプトでのPerl、私が入っているディレクトリ持っている別のウィンドウで.exeファイルを実行し、PID

  • script.pl
  • app.exeの

を、私が実行したいですこのような別のシェルでapp.exeの

  • は私がscript.pl
  • SHELを実行しますオープンしてしばらくするperlスクリプト
  • でコマンドを実行リットル、perlスクリプトがapp.exeの実行(およびapp.exeのPIDを取得する)
  • 新しいシェル開口部とapp.exeのを実行すること。私は実行するにはどうすればよい

    1. :同じ時間では、Perlのスクリプトはしばらくして彼の実行
    2. を継続し、perlスクリプトは、(PID付き)app.exeの

私の質問を停止します別のシェルウィンドウにあるapp.exe "background mode"? (perlスクリプトの実行とapp.exeは「並列」です)

  • 私のapp.exeのPIDは、perlスクリプトが実行するとどうやって取得できますか?
  • はPerlで新しい:)

    +2

    Windowsでは、['$ pid = system(1、...)'](https://metacpan.org/pod/perlport#system)です。 – mob

    +0

    私がそれをするとき、私はpidを得る。ただし、app.exeはperlスクリプトを実行したのと同じシェルで実行されます。私は、app.exeが実行される新しいシェルを開きたいと思います。 (perlスクリプト用に1つのシェルが実行され続け、app.exe用に1つのシェルが実行されます) – user2137454

    +0

    'system(1、" START ... ")' – mob

    答えて

    0

    - 私をありがとうしかし、私はあなたがこれで解決することができると思います。

    私の答え:

    質問1:あなたは2つの方法をテストすることができます。

    ケース1:直接システムコマンドを使用して:

    システム( "app.exeの開始");

    ケース2: launchコマンドだけでバッチファイルを作成し、perlで実行します。

    launchAPP.bat


    @echo off 
    start app.exe 
    

    Perlコード:

    system("launchAPP.bat"); 
    

    質問2:あなたはまた、2つの方法をテストすることができます。

    システムのアーキテクチャによって異なります。

    x32: あなたのコードに適合するライブラリがCPANにあります。これは、Windows Cライブラリを使用して情報を取得します。 Win32::Process::List

    のx64またはx32の:

    あなたがWMIC使用することができます:Perlで

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

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

    それが作成されます。ここ

    はCPANライブラリへのリンクですあなたが抽出したいプロセスのpidを持つファイルperlで簡単に読むことができます。

    こちらがお役に立てば幸いです。

    関連する問題