Un paio di domande

3 views
Skip to first unread message

Administrator

unread,
Dec 17, 2008, 8:47:58 AM12/17/08
to Erlang Etna User Group
Ho un paio di domande da fare:

- esiste un modo per interagire con una shell ?
c'è la funzione os:cmd("command").
ma ritorna solo l'output.
- esiste un modo per fare cambiare l'aspetto all' indicatore in gs ?
insomma in qualunque modo.
- c'è una minima speranza di fare un gioco 3D con erlang ?
insomma wing3d è perfetto per la modellazione ma l'animazione ?

Vincenzo Nicosia

unread,
Dec 17, 2008, 9:09:00 AM12/17/08
to erlan...@googlegroups.com
On Mer, 17 Dicembre 2008 2:47 pm, Administrator wrote:
>
> Ho un paio di domande da fare:
>
> - esiste un modo per interagire con una shell ?
> c'è la funzione os:cmd("command").
> ma ritorna solo l'output.

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

Daniele Varrazzo

unread,
Dec 17, 2008, 9:10:48 AM12/17/08
to erlan...@googlegroups.com
On Wed, Dec 17, 2008 at 1:47 PM, Administrator <gob...@gmail.com> wrote:
>
> Ho un paio di domande da fare:
>
> - esiste un modo per interagire con una shell ?
> c'è la funzione os:cmd("command").
> ma ritorna solo l'output.

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

Vincenzo Nicosia

unread,
Dec 17, 2008, 9:25:09 AM12/17/08
to erlan...@googlegroups.com
On Mer, 17 Dicembre 2008 3:10 pm, Daniele Varrazzo wrote:
>
> On Wed, Dec 17, 2008 at 1:47 PM, Administrator <gob...@gmail.com> wrote:
>>
>> Ho un paio di domande da fare:
>>
>> - esiste un modo per interagire con una shell ?
>> c'è la funzione os:cmd("command").
>> ma ritorna solo l'output.
>
> Puoi usare open_port(). Qui c'è un tutorial che sembra fatto bene:
> http://www.kazmier.com/computer/port-howto/

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

Daniele Varrazzo

unread,
Dec 17, 2008, 10:52:14 AM12/17/08
to erlan...@googlegroups.com

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

Administrator

unread,
Dec 17, 2008, 3:52:01 PM12/17/08
to Erlang Etna User Group
Insomma, se voglio usare la shell di linux (per amministrazione)
attraverso un programma con gs ?
dai la cosa non è così incomprensibile...

Vincenzo Nicosia

unread,
Dec 18, 2008, 7:27:07 AM12/18/08
to erlan...@googlegroups.com

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

freddi301 ji

unread,
Dec 19, 2008, 12:17:18 PM12/19/08
to erlan...@googlegroups.com
comunque date un' occhiata al gruppo "erlang italy"

Vincenzo Nicosia

unread,
Dec 19, 2008, 1:47:48 PM12/19/08
to erlan...@googlegroups.com
On Ven, 19 Dicembre 2008 6:17 pm, freddi301 ji wrote:
> comunque date un' occhiata al gruppo "erlang italy"
>

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

Michele Sciabarra

unread,
Dec 21, 2008, 4:23:55 PM12/21/08
to erlan...@googlegroups.com
Vincenzo Nicosia ha scritto:

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 *"])


Reply all
Reply to author
Forward
0 new messages