2

私は次のようにexeファイルを実行するコードを書きました:

 #!/usr/local/bin/perl     
 use Cwd;                      
 $directory   = 'e:/USER/';
 chdir($directory) or die ; 
 system("Bnc25-Windows.exe -nw");

今、私はそれを止めるために別のコードを書きたいと思います。私が書いた:

 #!/usr/local/bin/perl     
 use Cwd;                      
 $directory   = 'e:/USER/';
 chdir($directory) or die ; 
 kill Bnc25-Windows.exe ; 

しかし、それは機能せず、タスクマネージャーウィンドウでexeファイルが実行されていることがわかります。どこに問題があるのか​​よくわかりません。助けてくれてありがとう

4

3 に答える 3

5

Windowsを使用しています。killWindowsにはコマンドはありません。これに使用できますtaskkill

system再度機能を使用してください。

system("taskkill /im Bnc25-Windows.exe /f");
于 2012-12-30T08:11:12.187 に答える
4

Perlkill関数には、名前ではなく、強制終了するプロセスの数値ID(シグナル名/番号および)が必要です。

一般的なアドバイスとして、コードを次のように始めることを強くお勧めします。

use strict;
use warnings;

そして、それらが生成するエラーと警告を修正します。

たとえば、質問のコードでこれを行った場合、(コードがチェックに合格するように、の最初の宣言の前に欠落している引用符Bnc25-Windows.exeと欠落している引用符を修正した後)次の警告を受け取ります。my$directorystrict

Unrecognized signal name "Bnc25-Windows.exe" at test.pl line 7.

これは、シグナル名としてkill解析しようとして"Bnc25-Windows.exe"いることを示しています。これは、使用しようとしている方法に問題があることを示唆しており、ドキュメントを参照するようになっていることを願っています(リンクを参照)。上記)。これはkill、Perlで関数を使用する適切な方法を説明し、 Unix以外のシステムでの使用に関する移植性の警告へのリンクも示しています。

于 2012-12-30T11:06:24.213 に答える
0

killによってプロセスを強制終了しますPIDkillall実行可能ファイル名でプロセスを強制終了する必要があります。どちらもunixコマンドであり、viaで利用できますcygwin(おそらく、これを使用しています)。

于 2012-12-30T08:21:39.017 に答える