В среде 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-скрипта, вот короткий пример, который показывает результаты ps после запуска exec'ed процесса и затем после его остановки:
#!/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 в разных каталогах, вам придется соответствующим образом изменить скрипт.