1

У меня проблема с запуском программы в Matlab с помощью командного файла или только функции DOS (). Теперь я могу открыть программу и запустить ее с помощью ввода:

запустить program.exe input.mdu

Но когда вычисление закончено, оно не закрывается само по себе. Я пробовал taskkill, taskkill в сочетании с /wait, close, quit, end, done и т.д. У меня нет никакого опыта с этим и я не могу найти информацию по этой проблеме. Когда я пробовал разные команды, я либо вообще не мог закрыть его, либо он закрылся до завершения вычисления.

Я могу заставить его работать в CMD с помощью TaskKill. Затем он ожидает завершения программы, но когда я помещаю ее в командный файл или в функцию dos в Matlab, возникают проблемы.

4 ответа4

1

Вы пробовали использовать !program.exe input.mdu ? Это должно вернуть управление Matlab после запуска program.exe. Смотрите раздел с восклицательным знаком в help punct

РЕДАКТИРОВАТЬ: Это не поможет, если программа не выходит, хотя.

0

Убить процесс довольно просто с помощью командного файла, но как может DOS (или, более вероятно, сеанс команд Windows, который не является DOS) знать, когда MATLAB завершил свои вычисления? Вы можете сделать так, чтобы MATLAB записал файл, когда это было сделано, и использовал его в качестве сигнала. Но я думаю, что вы идете об этом все неправильно.

MATLAB знает, когда он закончил, да? И у вас должен быть какой-то тип сценария MATLAB, который выполняет ваши вычисления. И у MATLAB есть команда EXIT.

Так что просто включите команду EXIT в ваш скрипт MATLAB.

0

Хорошо, спасибо, что нашли время для моей проблемы, но теперь я думаю, что на самом деле нет решения. Я отправил создателям прогам по почте что-нибудь, что автоматически сделало бы его закрытие после симуляции. И они делают это для меня сейчас. Так что спасибо в любом случае!

0

Если вы запускаете программу без команды start (которая создает новое окно), вот так:

program.exe input.mdu

Вы можете прекратить его, нажав CTRL+BREAK .

Если вам нужно использовать start для запуска программы - вы должны нажать эту комбинацию клавиш, когда окно вашей программы будет в фокусе.

Из MSDN (ссылка):

Комбинации клавиш CTRL+C и CTRL+BREAK получают особую обработку консольными процессами. По умолчанию, когда окно консоли имеет фокус клавиатуры, CTRL+C или CTRL+BREAK обрабатываются как сигнал (SIGINT или SIGBREAK), а не как ввод с клавиатуры. По умолчанию эти сигналы передаются всем процессам консоли, которые подключены к консоли. (...) CTRL+BREAK всегда рассматривается как сигнал, но приложение может изменить поведение CTRL+C по умолчанию (...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .