Вопрос

Чтобы немного прояснить ситуацию, я нахожусь в процессе разработки серьезной игры (~ совместное моделирование) с Netlogo с использованием Hubnet.Я бы хотел динамически связать NetLogo с внешней моделью, чтобы игроки могли:1) запустите внешнюю программу (т.е.модель) из своего клиентского интерфейса hubnet, указывая параметры в качестве входных данных, и 2) иметь доступ к результатам моделирования (т.е.считывание выходных данных модели в виде внешних файлов).

Я нашел этот пост:https://groups .yahoo.com/neo/groups/netlogo-users/conversations/topics/8145

итак, я скачал / установил расширения оболочки с NetLogo 5.0.5 (Mac OsX 10.7.5) и начал играть с ней.

Хорошие вещи я умею выполнять :

наблюдатель>оболочка:cd "путь"

наблюдатель>оболочка:pwd

наблюдатель>оболочка:exec "ls" (и все команды, которым не нужны входные параметры, такие как оболочка:exec "cal", оболочка: exec "df"...).

Теперь о плохих вещах...

1) Мне постоянно не удается запустить какое-либо случайное приложение, используя эти команды:observer>оболочка:exec "Safari.app" или observer>оболочка:exec "Safari" (--> ошибка)

Мой рабочий каталог правильный, и Safari (или другие приложения, которые я пытаюсь запустить) действительно присутствует, но NetLogo возвращает следующую ошибку:

Исключение расширения:Не удается запустить программу "Safari" (в каталоге "/Applications"):ошибка = 2, такого файла или каталога нет ошибка при запуске observer SHELL: EXEC вызывается командным центром

2) Я также изо всех сил пытаюсь выполнять команды оболочки, принимая параметры (например, оболочка: exec "открыть" "параметр 1" "параметр 2" ...).Я не могу найти правильный синтаксис, чтобы NetLogo не распознал входные параметры, которые я пытаюсь передать команде.

У меня очень ограниченный опыт работы с Unix, и я относительный новичок в NetLogo, так что, должно быть, я где-то что-то упускаю.

Если бы кто-нибудь мог помочь мне в этом, я был бы очень признателен!

Большое спасибо!

Clément

Это было полезно?

Решение

Это OS X, вы должны использовать open чтобы открыть .app Файлы.Как вы заметили, вы должны разделять аргументы программы.Итак

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

должен делать то, что ты хочешь.

Вот пример реального исполняемого файла с несколькими аргументами:

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

Наконец, обратите внимание, что shell:exec является репортером.Он возвращает выходные данные программы в виде строки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top