Bien, pues para hacerlo, he diferenciado 3 casos: Leer un fichero del exterior, ejecutar un comando tipo system, y finalmente ejecutar un comando y captar la salida.
Leer un fichero exterior
En entorno squeak, los ficheros no tienen mucho sentido ya que todo esta latente en la imagen, con lo que el mismo codigo es el sistema, que esta organizado en clases....blablabla....
Sin embargo, si necesitamos leer un fichero, como cojones lo hacemos? Pues bien facil:
a := CrLfFileStream fileNamed: '/tmp/a.pl'.Sin el CrLf, el objeto FileStream no interpreta los finales de linea, y printara el archvo con caracteres raros.
string := a contentsOfEntireFile .
Transcript show: string.
a close
Ref: http://wiki.squeak.org/squeak/1583
Ejecutar un comando con 'system'
bien, ahora quiero ejecutar un programa del sistema host, no de la imagen de squeak (¿existe el concepto programa en squeak?)
Yo lo he conseguido metiendo lo siguiente en el workspace:
UnixProcess command: 'ratmen hola hola adeu adeu'.Esto esta en el paquete OSProcess, si no lo tienes, instalalo usando el universe package browser o el SqueakMap.
Nota: Para GNU Smalltalk se puede usar
SystemDictionary system: aString
Ref: http://www.cs.utah.edu/dept/old/texinfo/mst/mst.htmlPopen en squeak. pipe entre el proceso externo y el caller
No lo he conseguido :( . Seguiremos informando
Copy&Paste
Q: Eh tio, no puedo copiar y pegar el codigo de mi SO a squeak...
A: Edita tu ~/.Xresources y añade
*VT100.translations: #override\
<> : select-end(PRIMARY, CUT_BUFFER0, CLIPBOARD)\n\
<> : insert-selection(PRIMARY, CUT_BUFFER0, CLIPBOARD)\n\
<> : select-end(PRIMARY, CUT_BUFFER0, CLIPBOARD)
~
No hay comentarios:
Publicar un comentario