我正试图终止我在 Win32 (XP) 上用 Perl 在后台打开的进程 我尝试了几件事……似乎没有用……
$pid = open( CMD, "| cmd.exe > C:\\cmdout.txt" );
为了杀死这个后台进程尝试了几种方法....:(
system('taskkill/F/IM cmd.exe');
system("taskkill/F/pid $pid");
关闭CMD ||警告“cmd 退出 $?”;
选项 2 从不工作 尝试打印 PID 打印的值与系统中的实际值不同。 选项 1 有效,但我觉得该过程仍在后台运行,因为在我结束该过程后,我等待一段时间并重新启动该过程...
请帮忙
-谢谢
最佳答案
我对你的情况做了一些尝试。显然启动了两个 cmd.exe,父级具有 open
返回的 PID,其子级执行命令。
第二种情况部分有效,它杀死了父级,但子级仍在运行。使用 /T
选项到 taskkill
你可以强制它杀死所有的 child :
system("taskkill /F /T /pid $pid");
您将看到有关两个进程终止的消息:
SUCCESS: The process with PID 3956 child of PID 1864 has been terminated.
SUCCESS: The process with PID 1864 child of PID 580 has been terminated.
第三种情况似乎适合我。关闭文件句柄会使两个 CMD 进程终止。
关于windows - 如何杀死用open()打开的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911366/