C:\\cmdout.txt" -6ren">
gpt4 book ai didi

windows - 如何杀死用open()打开的进程

转载 作者:可可西里 更新时间:2023-11-01 11:22:04 25 4
gpt4 key购买 nike

我正试图终止我在 Win32 (XP) 上用 Perl 在后台打开的进程我尝试了几件事……似乎没有用……

$pid = open( CMD, "| cmd.exe > C:\\cmdout.txt" );

为了杀死这个后台进程尝试了几种方法....:(

  1. system('taskkill/F/IM cmd.exe');

  2. system("taskkill/F/pid $pid");

  3. 关闭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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com