0

我想知道通过 tcl 编码检索 windows 中所有可用 pid 的方法。这是我需要根据它是否可用来杀死进程吗?感谢您。代码:

proc stopprogressbar {} {
  variable n_progressWinPid;
  if {[info exists n_progressWinPid]} {
    if {$n_progressWinPid > 0} {
      if {[lsearch [GETALLPIDS] $n_progressWinPid] >= 0} {
        catch {exec [auto_execok taskkill] /PID $n_progressWinPid}
      }
    }
  }
}
4

2 回答 2

4

twapi::get_process_ids返回 Windows 系统上的所有 PID。你必须package require twapi先。

如果您使用 ActiveTcl,C:\Tcl\bin\teacup.exe install twapi请在命令提示符下运行(或安装 Tcl 的任何位置)以获取 TWAPI。它甚至可能默认包含在较新的 ActiveTcl 版本中,我不知道。

于 2013-01-08T12:17:41.260 回答
1

看来您的目标是杀死一个进程(如果存在)。不检查就以任何方式杀死它怎么样?

package require Tclx;           # For the kill command
catch {kill $n_progressWinPid}; # Kill the process

Tclx 包中您可能会发现有用的其他命令:

id process;        # Get PID for this process
id process parent; # Get PID for the parent of this process
wait ?many options? pid; # Wait for a process

请查找 Tclx 包的帮助以获取更多信息。

于 2013-01-08T07:49:25.293 回答