2

I wrote a code to run an exe file as follow:

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

Now I want to write another code to stop it. I wrote:

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

but it doesn't work and I see in task manager window that the exe file is running. I don't really know where is the problem. thanks for any help

4

3 回答 3

5

You are using Windows. There is no kill command in Windows. You can use taskkill for this.

Use the system function again.

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

Perlkill函数需要(信号名称/编号和)您要杀死的进程的数字 ID,而不是它的名称。

作为一般建议,我强烈建议您使用以下代码开始您的代码:

use strict;
use warnings;

并修复它们生成的任何错误和警告。

例如,如果您使用问题中的代码完成了此操作,您将(在修复周围缺少的引号Bnc25-Windows.exemy第一次声明之前缺少的引号之后$directory,以便代码通过strict检查)收到以下警告:

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杀死进程PID。您需要killall按可执行名称终止进程。两者都是unix命令,可在 via 上使用cygwin(您可能正在使用)。

于 2012-12-30T08:21:39.017 回答