如何从命令行脚本(或 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+)。
我编写了一个程序,使用 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+)。