在Unix上的Tcl中,如何杀死用exec启动的后台进程?
发布时间:2020-12-15 21:30:02 所属栏目:安全 来源:网络整理
导读:我想通过使用Tcl的exec命令从Tcl程序中启动Unix后台进程.但是,我想在将来的任意时间以编程方式从同一个Tcl程序中删除后台进程.我怎样才能最好地完成这个? bash$cat loop.bash#!/bin/bashwhile [ 1 ]; do sleep 5; done;bash$tclsh% exec /home/dana/travis/
我想通过使用Tcl的exec命令从Tcl程序中启动Unix后台进程.但是,我想在将来的任意时间以编程方式从同一个Tcl程序中删除后台进程.我怎样才能最好地完成这个?
bash$cat loop.bash #!/bin/bash while [ 1 ]; do sleep 5; done; bash$tclsh % exec /home/dana/travis/loop.bash & 6598 % puts "How do I kill the background process started by the previous exec command?" How do I kill the background process started by the previous exec command? % 解决方法
在tclsh环境中,您仍然可以访问
ps 和
kill 之类的命令.我重新创建了循环脚本,然后进入了tclsh会话:
$tclsh % exec /path/to/loop.sh & 22267% ps PID TTY TIME CMD 19877 pts/0 00:00:00 bash 22212 pts/0 00:00:00 emacs-x 22317 pts/0 00:00:00 tclsh 22319 pts/0 00:00:00 loop.sh 22326 pts/0 00:00:00 sleep 22327 pts/0 00:00:00 ps % kill 22319 % ps PID TTY TIME CMD 19877 pts/0 00:00:00 bash 22212 pts/0 00:00:00 emacs-x 22317 pts/0 00:00:00 tclsh 22332 pts/0 00:00:00 ps 如果你想从tcl脚本中执行此操作,这里有一个简短的示例,它显示了exec’ed进程启动后的ps结果,然后是停止后的结果: #!/usr/bin/tclsh set id [exec /path/to/loop.sh &] puts "Started process: $id" set ps [exec /bin/ps] puts "$ps" exec /usr/bin/kill $id puts "Stopped process: $id" set ps [exec /bin/ps] puts "$ps" 如果您的系统在不同目录中具有ps和kill,则必须相应地修改脚本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |