我正在尝试在从解释器中运行 tclhttpd,但稍作修改以便在 tclkit 中运行。下面的代码“运行”(我可以点击http://localhost:8015)但从未到达底部的 puts 行,因为“服务器没有返回,它进入 [vwait forever]”。但是当我尝试“after 0 技巧”时,例如在“$httpd eval $cmd”行前面加上“after 0”,服务器根本没有运行,所以我认为“错误必须由 bgerror 处理”
但是我找不到如何使用 bgerror 的好例子,而且我的研究表明现在的惯例是使用“interp bgerror”。请参阅http://www2.tcl.tk/_/gsearch?S=bgerror返回的前几个示例;第一个链接包含“填写有用的技巧和使用 bgerror 的示例”这样的措辞,但是没有我可以辨别如何应用的示例,第二个链接的结论是“我对应该如何使用它的示例感兴趣”。
package require starkit
starkit::startup
set httpd_args [list]
set httpd [interp create]
$httpd eval "set argc [llength $httpd_args]"
set cmdargv "set argv [list $httpd_args ]"
$httpd eval "set topdir $starkit::topdir"
$httpd eval $cmdargv
set cmd [list source [file join $starkit::topdir bin/httpd.tcl]]
$httpd eval $cmd
puts "if seeing this controlled has returned"