Linux环境下Tcl中如何基于文件存在性检查终止应用程序

Linux环境下Tcl中如何基于文件存在性检查终止应用程序,linux,tcl,vnc-server,Linux,Tcl,Vnc Server,我运行T-PlanRobot,它连接到我的windows机器并执行一些脚本。 成功执行脚本后,我通过pscp将生成的xml文件导出到我的linux机器 T-paln机器人充当第三方免费软件,通过windows机器上的cmd传递一些命令。 这是通过在t-plan robot上运行一个简单的批处理文件来实现的。但是,向windows发送命令的脚本会根据一些明确声明的超时秒断开自身连接 我想写一个tcl代码,在linux机器上启动这个应用程序,一旦命令生成了一个成功的xml文件,并在linux机器上接

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

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

我想写一个tcl代码,在linux机器上启动这个应用程序,一旦命令生成了一个成功的xml文件,并在linux机器上接收到,它应该检查指定目录中是否存在xml文件,并立即终止应用程序

我认为tcl中应该有一些类在任何环境中都会终止进程/服务,这里我需要在linux中执行它


真诚地等待回复。提前感谢您在同一台Linux计算机上终止进程,前提是您有权这样做(即,您以同一用户的身份运行),您可以执行以下操作之一:

package require Tclx
kill $processId
或:

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

这两者都需要进程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

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

您的问题相当令人困惑。你应该试着把你的整个任务分解成更小的部分,你要么知道怎么做,要么可以毫不含糊地询问。并不是说我们无法帮助您获得总体解决方案,但是我们也希望你的问题和我们的答案对其他人有用。谢谢你的快速回复@DonalFellows。好的,那么我就解释一下我觉得真正的挑战是什么。我基本上有两个代码块是用tcl编写的。第一个简单地使用一个进程连接到windows机器,这将启动一个客户端软件(T-plan robot)它通过windows机器的IP。现在,下一个代码块解析在运行时收到的xml文件。但这一切都是在T-plan robot仍在运行时完成的。我想在触摸代码解析块之前,一旦收到来自windows的文件,立即终止进程。
exec ssh $remoteMachine taskkill /PID $remotePID