如何在Linux环境下使用Tcl中的文件存在检查来终止应用程序

时间:2014-03-20 12:10:31

标签: linux tcl vnc-server

我运行T-Plan机器人,它连接到我的Windows机器并执行一些脚本。 成功执行脚本后,我将生成的xml文件通过pscp导出到我的linux机器。

T-paln机器人充当第三方免费软件,通过Windows机器上的cmd传递一些命令。 这是通过在t-plan robot上运行一个简单的批处理文件来实现的。但是,向Windows发送命令的脚本会根据一些明确声明的超时秒断开连接。

我想写一个tcl代码在linux机器上启动这个应用程序,一旦命令生成了一个成功的结果作为xml文件并在linux机器上收到,它应该检查指定目录中是否存在xml文件并终止我想要这个,因为下一个代码部分会解析这个收到的xml报告并执行其他操作。

我认为tcl中应该有一些类可以杀死任何环境中的进程/服务,这里我需要在linux中执行它。

真诚地等待回复。谢谢提前

1 个答案:

答案 0 :(得分:0)

要杀死同一台Linux计算机上的进程,只要您获得了许可(即,您以同一用户身份运行),您可以执行以下任一操作:

package require Tclx
kill $processId

或者:

exec kill $processId

(前者不需要外部命令 - 它直接进行系统调用 - 但第二个不需要Tclx pacakge。)

这两个都需要进程ID

要测试文件是否存在,请使用file exists,如下所示:

if {[file exists $theFilename]} {
    puts "Woohoo! $theFilename is there!"
}

要杀死远程计算机上的某些内容,您需要发送一个命令来运行该计算机。也许就像:

exec ssh $remoteMachine kill $remotePID

获取$remotePID可能是“有趣的”,可能需要在整个系统设计中进行一些深思熟虑。如果从Windows调用Linux,请将ssh替换为plink。如果走另一条路,你就是在谈论:

exec ssh $remoteMachine taskkill /PID $remotePID

这可能变得非常复杂,我不确定你现在采取的方法是否正确。