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

How to launch a Common Lisp GTK app from a command line script (or cron)?

我编写了一个程序,使用 cl-cffi-gtk 和 Common Lisp 生成一个简单的托盘图标,名为 tray-icon.lisp,它在名为 ASDF 的系统中定义每小时玩家。我现在的问题是,虽然这个应用程序从命令行启动很好,但从脚本启动它却有点困难。 如果我尝试

sbcl --eval '(asdf:load-system "hourly-player")' --eval '(hourly-player:run)' 

我的应用程序已正确加载到 SBCL REPL 中,并且托盘图标显示正确。但是,如果我添加 & 以在后台启动我的脚本,它似乎会立即终止。

在我的 run 函数末尾添加一个 (loop) 可以防止脚本终止,但显然也占用了我的 CPU 比这样的应用程序所需的更多(根据 conky 大约有 12% 的负载,而在 sbcl 中 运行 时基本上没有负载。

是否有一些规范的方法可以让我的脚本作为后台进程保持活动状态?

我也知道还有其他方法可以执行 lisp 程序,但它们要么存在相同的问题(例如核心转储),要么似乎破坏了我的系统定义依赖性(至少 buildapp 和 cl-launch 似乎这样做)。

如果有帮助,可以找到我的项目here

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