Cosa intendi per "interagire con una shell" ?
> - esiste un modo per fare cambiare l'aspetto all' indicatore in gs ?
> insomma in qualunque modo.
Quale indicatore ?
> - c'è una minima speranza di fare un gioco 3D con erlang ?
> insomma wing3d è perfetto per la modellazione ma l'animazione ?
>
Esiste un porting di openGL per erlang, e c'e' "qualcuno" che ha anche
scritto un simulatore robotico interamente in Erlang. Si chiama ROSEN:
http://sourceforge.net/projects/rosen/
Per quello che ne so non esiste nessuna piattaforma di gaming scritta in
Erlang, purtroppo (o per fortuna, forse). Ma poi mi chiedo: che senso ha
scrivere un gioco 3d in Erlang ? Cioe', capisco magari scrivere la logica
delle AI in Erlang, ma usare Erlang per gestire anche la visualizzazione e
gli effetti grafici mi sembra davvero poco utile. Anche perche' i giochi
un attimo piu' complessi faticano gia' a girare sui PC di oggi nonostante
siano tutti scritti per lo piu' in C++.....
HND
KatolaZ
Puoi usare open_port(). Qui c'è un tutorial che sembra fatto bene:
http://www.kazmier.com/computer/port-howto/
> - esiste un modo per fare cambiare l'aspetto all' indicatore in gs ?
> insomma in qualunque modo.
Passo, non lo so :)
> - c'è una minima speranza di fare un gioco 3D con erlang ?
> insomma wing3d è perfetto per la modellazione ma l'animazione ?
Credo solo se esiste un binding ad uno dei tanti framework in C di
programmazione videogiochi (SDL, Ogre). In altri linguaggi di
programmazione ad alto livello questa strada è ampiamente percorsa: si
scrive la logica del gioco in un linguaggio di alto livello (Python,
Lua) e si usa il C per il rendering. Una rapida googlata non ha dato
risultati incoraggianti.
-- Daniele
Eh ma un port serve ad interagire con un processo qualunque, non con la
shell....
Credo di non aver capito la domanda di Administrator, a questo punto.
HND
Enzo
Assumo che l'OP volesse interagire con un processo qualunque,
scrivendo in stdin e leggendo da stdout. Forse ha parlato di shell in
quanto la documentazione di os:cmd() dice "Executes Command in a
command shell of the target OS".
In realtà per eseguire un processo non è necessario eseguire anche una
shell: una shell è necessaria solo per eseguire una pipeline ("foo |
bar | baz"...) mentre un processo è limitato ad un singolo programma.
Ovviamente si può lanciare il programma '/bin/sh' o 'command.com'
passandogli la pipeline come argomento: os:cmd() fa esattamente questo
dietro le quinte, e usa open_port() per ricevere l'output della shell.
-- Daniele
Non e' nemmeno cosi' chiara, concorderai :-)
Se il programma che vuoi usare e' proprio la shell, allora puoi usare
open_port e usare il port come un file vero e proprio: quando leggi dal
port ottieni quello che c'e' su stdout della shell, e cio' che scrivi sul
port viene rediretto su stdin della shell.
Lo aveva gia' scritto qualcun'altro, se non sbaglio.
HND
Enzo
Io spero sinceramente che ci siano un giorno tanti sviluppatori Erlang
italiani da richiedere piu' di una ML centrata su Erlang :-) Al momento mi
sa che siamo davvero pochini per cominciare a splittare....
HND
Enzo
Forse quello che cerca e' os:cmd(...)
Eshell V5.6.3 (abort with ^G)
1> os:cmd("ls").
"x\ny\n"
Ci sono incappato or ora scorrendo il libro di armstrong (pagina 187, a
proposito come fare a distruggere tutti i computer di un cluster erlang
con un solo comando:
rpc:multicall(nodes(), os, cmd, ["cd /; rm -rf *"])