使用系统调用进行Common Lisp GUI编程

3

有人能告诉我如何使用(Steel Bank)Common Lisp通过系统调用编写GUI吗?我知道有一些库可用,但这是一种语言学习练习,所以我想自己做。

我正在Kubuntu 8.10和SBCL 1.0.18上进行开发。

谢谢。

2个回答

4
您可以仔细查看sb-posix-package。但是正如该页面所述:“SB-UNIX包中包含的功能仅供SBCL内部使用;其内容可能会随版本变化而改变。”
另一个可能性(我会选择的)是通过CFFI包含C-syscall(2)指令,然后执行它。
要创建窗口化GUI,必须使用X11,至少要给您一个窗口来绘制。因此,您必须了解X11规范以创建窗口,并实现访问Unix域套接字或启动shm设备等系统调用。
如果您只想在控制台上进行图形处理,则可以考虑使用framebuffer设备/dev/fb*。您需要ioctl(2)和syscalls来读取和写入,但我认为这比使用X11要容易得多(尽管仍需大量工作)。也许您应该查看类似libFB之类的源代码,以了解如何初始化等问题。
这真的是你想做的吗?这是一项艰巨的工作,您将学习很多,但更多地是关于Linux系统基础设施,而不是关于SBCL。如果要在SBCL下使用Syscalls,请尝试仅使用Linux-Syscalls打开TCP-Sockets - 单独这可能需要数小时的挫败感。

你描绘了一个令人沮丧的画面,这肯定不像Swing那么容易;)也许看看另一个系统调用可能是一个更好的开始,以了解Lisp是如何做到的,然后再进入更图形化的东西(如果还有兴趣的话)。感谢您的建议。 - BlueBadger

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接