如何从命令行脚本(或cron)启动Common Lisp GTK应用程序?

时间:2017-11-13 21:07:15

标签: bash shell common-lisp gtk3 sbcl

我编写了一个程序,使用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

1 个答案:

答案 0 :(得分:2)

快速拍摄可能是(loop (sleep 60))以保持您的主程序活着。您还可以查看使用within-main-loop-and-wait而不是within-main-loop(来自gtk +)。