Pregunta

Para tener un poco de contexto, estoy en el proceso de desarrollar un juego serio (~simulación participativa) con Netlogo usando Hubnet.Me gustaría vincular dinámicamente NetLogo con un modelo externo para que los jugadores puedan:1) ejecutar un programa externo (es decir,un modelo) desde su interfaz de cliente hubnet, especificando parámetros como entradas, y 2) tener acceso a los resultados de la simulación (p. ej.leer las salidas del modelo como archivos externos).

Encontré esa publicación:https://groups.yahoo.com/neo/groups/netlogo-users/conversations/topics/8145

así que descargué/instalé las extensiones de shell con NetLogo 5.0.5 (Mac OsX 10.7.5) y comencé a jugar con él.

Las cosas buenas, puedo ejecutar:

observador>shell:cd "ruta"

observador>shell:pwd

observador>shell:exec "ls" (y todos los comandos que no necesitan parámetros de entrada como shell:exec "cal", shell:exec "df"...).

Ahora las cosas malas...

1) Constantemente no puedo iniciar ninguna aplicación aleatoria usando estos comandos:Observer> shell: ejecut "safari.app" u observador> shell: ejecut "safari" (-> error)

Mi directorio de trabajo es correcto y Safari (u otras aplicaciones que estoy intentando iniciar) está realmente presente, pero NetLogo devuelve el siguiente error:

Excepción de extensión:No se puede ejecutar el programa "Safari" (en el directorio "/Aplicaciones"):error=2, No existe tal archivo o directorio error mientras el observador ejecuta SHELL:EXEC llamado por el Centro de Comando

2) También tengo dificultades para ejecutar comandos de shell que toman parámetros (por ejemplo, shell:exec "abrir" "parámetro 1" "parámetro 2" ...).No puedo encontrar la sintaxis correcta para que NetLogo no reconozca los parámetros de entrada que intento pasar al comando.

Tengo una experiencia muy limitada en Unix y soy relativamente principiante con NetLogo, por lo que debo estar perdiendo algo en alguna parte.

Si alguien pudiera ayudarme con esto, ¡se lo agradecería mucho!

¡Muchas gracias!

Clemente

¿Fue útil?

Solución

Es OS X, tienes que usarlo open abrir .app archivos.Como notó, debe separar los argumentos del programa.Entonces

(shell:exec "open" "/Applications/Safari.app")

deberías hacer lo que quieras.

Aquí hay un ejemplo de un ejecutable real con múltiples argumentos:

(shell:exec "ls" "-l" "-t")

Finalmente, tenga en cuenta que shell:exec es reportero.Devuelve la salida del programa como una cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top