我编写了一个代码来运行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文件正在运行。 我真的不知道问题出在哪里。谢谢你的帮助
答案 0 :(得分:4)
您使用的是Windows。 Windows中没有kill
命令。您可以使用taskkill
。
再次使用system
功能。
system("taskkill /im Bnc25-Windows.exe /f");
答案 1 :(得分:4)
Perl kill
function需要(信号名称/编号和)要杀死的进程的数字ID,而不是其名称。
作为一般建议,我强烈建议您使用以下代码开始您的代码:
use strict;
use warnings;
并修正他们产生的任何错误和警告。
例如,如果您使用问题中的代码完成了此操作,那么(在Bnc25-Windows.exe
周围修复缺失的引号并在第一次声明{{1}之前修复缺失的my
之后,以便代码通过$directory
检查)收到以下警告:
strict
这会告诉你Unrecognized signal name "Bnc25-Windows.exe" at test.pl line 7.
正试图解析kill
作为信号名称,这会暗示你尝试使用它的方式有问题,并且希望能够让您查看文档(请参阅上面的链接),这两个文档都描述了在Perl中使用"Bnc25-Windows.exe"
函数的正确方法,并且还链接到portability warnings关于在非文档中使用它Unix系统。
答案 2 :(得分:0)
kill
按PID
杀死进程。您需要killall
按可执行文件名终止进程。两者都是unix
命令,可通过cygwin
(您可能正在使用)获得。