exponenta event banner

система

Выполнение команды операционной системы и возврат выходных данных

Описание

status = system(command) вызывает операционную систему для выполнения указанной команды. Операция ожидает завершения выполнения команды перед возвратом состояния выхода команды в status переменная.

Функция запускает новый процесс cmd/shell, выполняет command, завершает процесс и возвращается к процессу MATLAB ®. Обновления системной среды, выполненные command не видны для MATLAB.

пример

[status,cmdout] = system(command) также возвращает выходные данные команды для cmdout. Этот синтаксис наиболее полезен для команд, не требующих ввода пользователем, таких как dir.

[status,cmdout] = system(command,'-echo') также отображает (воспроизводит) выходные данные команды в окне команд MATLAB. Этот синтаксис наиболее полезен для команд, требующих ввода пользователем и выполняемых правильно в окне команд MATLAB.

Примеры

свернуть все

Отображение текущей папки с помощью cd команда. A status Значение 0 указывает на успешное выполнение команды. MATLAB возвращает вектор символов, содержащий текущую папку в cmdout.

command = 'cd';
[status,cmdout] = system(command)

Создание папки с именем mynew, вызовите mkdir и сохраните состояние выхода в переменной. A status 0 указывает, что mynew папка успешно создана.

command = 'mkdir mynew';
status = system(command)

Откройте Блокнот Microsoft ® и немедленно верните состояние выхода в MATLAB, добавив амперсанд (&) на notepad команда. A status ноль указывает, что Блокнот успешно запущен.

status = system('notepad &')

Выполните команду dir и просмотрите состояние выхода и выходные данные команды. cmdout содержит выходные данные команды.

[~,cmdout] = system('dir');

Попытка выполнения команды с именем badcmd. Затем просмотрите status и results выходные аргументы. При вызове недопустимой команды status указывает на отказ и results содержит сообщение об ошибке DOS.

[status,results] = system('badcmd')

Перечислите всех пользователей, которые в данный момент вошли в систему, и сохраните состояние завершения команды и выходные данные. Затем просмотрите статус. A status Значение 0 указывает на успешное выполнение команды. MATLAB ® возвращает список пользователей вcmdout.

command = 'who';
[status,cmdout] = system(command);
status
status = 0

Входные аргументы

свернуть все

Команда операционной системы, заданная как строка или символьный вектор. command выполняется в системной оболочке, которая может не быть оболочкой, из которой был запущен MATLAB.

Пример: 'dir'

Пример: 'ls'

Выходные аргументы

свернуть все

Состояние выхода команды, возвращенное как 0 или ненулевое целое число. При успешном выполнении команды status является 0. В противном случае status - ненулевое целое число.

  • Если command включает символ амперсанда (&), то status - статус выхода, когда command запуски

  • Если command не включает символ амперсанда (&), то status является состоянием выхода после command завершение.

Вывод команды операционной системы, возвращаемой в виде символьного вектора. Системная оболочка может неправильно представлять символы, отличные от Юникода ®.

Ограничения

  • MATLAB преобразует символы в кодировку, принимаемую оболочкой операционной системы. Выходные данные command преобразуется в кодировку MATLAB для отображения в окне команд. При получении непредвиденных результатов от команды введите command аргумент непосредственно в приглашении операционной системы, чтобы узнать, как операционная система обрабатывает введенные данные.

  • Функции обратного вызова не вызываются, пока system выполняется команда.

Подробнее

свернуть все

Советы и ограничения Windows

  • MS-DOS ® не поддерживает UNC-имена путей. Поэтому, если в текущей папке используется UNC-путь, выполняется system с DOS command , которая зависит от текущей папки. Чтобы обойти это ограничение, измените папку на сопоставленный диск перед вызовом system.

  • Можно переопределить переменную среды в system команда. Например, следующий код устанавливает PATH переменная для myPath, затем вызывает системную команду dosCommand с этим значением.

    system(['set PATH=' myPath ' && ' dosCommand])
  • Чтобы выполнить команду операционной системы в фоновом режиме, включите символ в конце, &, в command аргумент. Например, введите 'notepad &'. Статус выхода немедленно возвращается в status переменная. Этот синтаксис полезен для консольных программ, которые требуют интерактивного ввода команд пользователя во время их выполнения и которые неправильно выполняются в окне команд MATLAB.

    Если command включает в себя завершающий & символ, затем cmdout пуст.

  • system использует те же учетные данные, что и учетные данные, используемые для запуска MATLAB. Установка учетных данных для программы myprogram.exe для получения прав администратора введите:

    system('cmd /C myprogram.exe');

Советы и ограничения UNIX

  • Для выполнения данной команды MATLAB использует программу оболочки. Она определяет, какую программу оболочки использовать, проверяя переменные среды в системе. MATLAB сначала проверяет MATLAB_SHELL переменная, и если она пуста или не определена, то проверка SHELL. Если SHELL также пуст или не определен, MATLAB использует /bin/sh.

  • system перенаправления функций stdin кому command по умолчанию. Это перенаправление также передает команды сценария MATLAB и буфер опережающего ввода клавиатуры вызываемой команде во время system выполняет функцию. Такое поведение может привести к повреждению выходных данных system не завершает выполнение немедленно. Отключить stdin и перенаправление с опережением по типу, включая форматированный текст < /dev/null в вызове вызываемой команды.

  • Можно переопределить переменную среды в system команда. Синтаксис зависит от оболочки UNIX ®. Например, при использовании оболочки BASH следующий код устанавливает PATH переменная для myPath, затем вызывает системную команду command с этим значением.

    system(['export PATH=' myPath ' ; ' command])
  • Чтобы выполнить команду операционной системы в фоновом режиме, включите символ в конце, &, в command аргумент. Например, введите 'emacs &'. Статус выхода немедленно возвращается в status переменная. Этот синтаксис полезен для консольных программ, которые требуют интерактивного ввода команд пользователя во время их выполнения и которые неправильно выполняются в окне команд MATLAB.

    Если command включает в себя завершающий & символ, затем cmdout пуст.

Представлен до R2006a