我编写了一个程序,使用cl-cffi-gtk和名为 tray-icon.lisp 的Common Lisp生成一个简单的托盘图标,该程序在ASDF系统中定义,名为 hourly-player < / em>的。我现在的问题是,当这个应用程序从命令行启动时,从脚本启动它会变得有点困难。 如果我试试
sbcl --eval '(asdf:load-system "hourly-player")' --eval '(hourly-player:run)'
我的应用程序已正确加载到SBCL REPL中,并且托盘图标正确显示。但是,如果我在后台添加&
来启动我的脚本,它似乎会立即终止。
在我的(loop)
函数末尾添加run
会使脚本无法终止但显然占用我的CPU的时间远远超过此类应用所需的(大约12%的负载根据conk相比,在sbcl中运行时基本上没什么。)
是否有一些规范的方法可以让我的脚本作为后台进程保持活动状态?
我也意识到还有其他方法可以执行lisp程序,但是它们要么共享相同的问题(例如核心转储),要么似乎破坏了我的系统定义依赖性(至少buildapp和cl-launch似乎这样做。)
如果有帮助,我的项目可以找到here。
答案 0 :(得分:2)
快速拍摄可能是(loop (sleep 60))
以保持您的主程序活着。您还可以查看使用within-main-loop-and-wait
而不是within-main-loop
(来自gtk +)。