Domanda

Qualcuno può parlarmi dell'utilizzo di (Steel Bank) Common Lisp per la scrittura di GUI tramite chiamate di sistema? So che ci sono alcune biblioteche là fuori ma questo è un esercizio di apprendimento delle lingue, quindi voglio farlo da solo.

Sto sviluppando su Kubuntu 8.10 e SBCL 1.0.18.

Grazie.

È stato utile?

Soluzione

Puoi dare un'occhiata più da vicino al sb-posix-package . Ma come dice la pagina "La funzionalità contenuta nel pacchetto SB-UNIX è solo per uso interno SBCL; è probabile che il contenuto cambi da versione a versione. "

Un'altra possibilità - quella che sceglierei - è quella di includere l'istruzione C-syscall (2) tramite CFFI , quindi eseguilo.

Per creare una GUI con finestre, devi usare X11, almeno per darti una finestra su cui dipingere. Pertanto, è necessario conoscere le specifiche X11 per creare una finestra e implementare Syscalls per accedere a Unix Domain Socket o avviare shm-devices ecc.

Se vuoi solo grafica su una console, potresti pensare di usare il framebuffer-device / dev / fb * . Per usarlo, hai bisogno di ioctl (2) e di syscalls per leggere (2) ing e write (2) ing, ma comunque, penso che sarebbe molto più facile che usare X11 per questo (anche se ancora molto lavoro). Forse dovresti guardare il codice sorgente per libFB o qualcosa di simile per vedere come inizializzarlo, ecc. .

È davvero quello che vuoi fare? Questo è molto lavoro, imparerai molto, ma credo di più sull'infrastruttura del sistema Linux, piuttosto che su SBCL. Se vuoi usare Syscalls sotto SBCL, forse è meglio provare ad aprire TCP-Socket solo con Linux-Syscalls - da solo questo può richiedere ore di frustrazione.

Altri suggerimenti

Scrivendo la GUI tramite le chiamate di sistema intendi non usare alcun toolkit GUI come Gtk + o Qt? In tal caso, dovresti parlare direttamente con l'X-server tramite socket e implementare tutto il protocollo X11 (o usare CLX) e la GUI su di esso. Ma questo non è un compito più semplice, perché X11 è complesso.

Nel caso in cui decidessi di scavare in X11, ci sono alcuni link per le specifiche: http: / /www.xfree86.org/current/specindex.html http://www.freedesktop.org/wiki/Specifications?action=show& reindirizzare = norme

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top