이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

system

운영 체제의 명령 실행 및 출력값 반환

설명

status = system(command)는 운영 체제를 호출하여 지정된 명령을 실행합니다. 이 작업은 명령 실행이 완료되기를 기다린 다음 명령의 종료 상태를 status 변수에 반환합니다.

이 함수는 새 cmd/셸 프로세스를 시작하여 command를 실행한 후 프로세스를 종료하고 MATLAB® 프로세스로 돌아갑니다. command에 의한 시스템 환경 업데이트는 MATLAB에서 인식되지 않습니다.

예제

[status,cmdout] = system(command)는 명령의 출력값도 cmdout에 반환합니다. 이 구문은 dir과 같이 사용자 입력이 요구되지 않는 명령에 가장 적합합니다.

[status,cmdout] = system(command,'-echo')는 MATLAB 명령 창에 명령 출력값도 표시(에코)합니다. 이 구문은 사용자 입력이 요구되며 MATLAB 명령 창에서 올바르게 실행되는 명령에 가장 적합합니다.

예제

모두 축소

cd 명령을 사용하여 현재 폴더를 표시합니다. status 0은 명령이 성공적으로 완료되었음을 나타냅니다. MATLAB은 cmdout에 현재 폴더를 포함하는 문자형 벡터를 반환합니다.

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

mynew라는 이름의 폴더를 만들려면 mkdir 명령을 호출하고 종료 상태를 변수에 저장하십시오. status 0은 mynew 폴더가 성공적으로 생성되었음을 나타냅니다.

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

Microsoft® 메모장을 열고 앰퍼샌드(&)를 notepad 명령에 추가(append)하여 종료 상태를 MATLAB으로 즉시 반환합니다. status 0은 메모장이 성공적으로 시작되었음을 나타냅니다.

status = system('notepad &')

dir 명령을 실행하고 종료 상태와 명령 출력값을 확인합니다. cmdout에는 명령 출력값이 들어 있습니다.

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

badcmd 명령 실행을 시도합니다. 그런 다음 출력 인수 statusresults 값을 확인합니다. 유효하지 않은 명령을 호출하는 경우 status는 실패를 표시하고 results는 DOS 오류 메시지를 포함합니다.

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

현재 로그인된 사용자를 모두 나열하고 명령 종료 상태 및 출력값을 저장합니다. 그런 다음 상태를 표시합니다. status 0은 명령이 성공적으로 완료되었음을 나타냅니다. MATLAB®은 cmdout에 사용자 목록을 반환합니다.

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

입력 인수

모두 축소

운영 체제 명령으로, string형이나 문자형 벡터로 지정됩니다. 이 command는 시스템 셸을 실행합니다. 이 셸은 MATLAB을 시작한 셸이 아닐 수 있습니다.

예: 'dir'

예: 'ls'

출력 인수

모두 축소

명령 종료 상태로, 0이나 0이 아닌 정수로 반환됩니다. 명령이 성공한 경우 status의 값은 0이 됩니다. 그렇지 않은 경우 status는 0이 아닌 정수 값을 갖게 됩니다.

  • command에 앰퍼샌드 문자(&)가 포함되는 경우 statuscommand 시작 시의 종료 상태를 의미하게 됩니다.

  • command에 앰퍼샌드 문자(&)가 포함되지 않는 경우 statuscommand 완료 시의 종료 상태를 의미하게 됩니다.

운영 체제 명령의 출력값으로, 문자형 벡터로 반환됩니다. 시스템 셸이 비 Unicode® 문자를 제대로 나타내지 않을 수 있습니다.

제한 사항

  • MATLAB은 문자를 운영 체제 셸에서 허용되는 인코딩으로 변환합니다. command의 출력값은 명령 창에 표시할 MATLAB 인코딩으로 변환됩니다. 명령 실행 시 예기치 않은 결과가 나오는 경우 command 인수를 운영 체제 프롬프트에 직접 입력하여 입력값이 운영 체제에서 어떻게 처리되는지 확인하십시오.

  • system 명령이 실행 중일 때는 콜백 함수가 호출되지 않습니다.

세부 정보

모두 축소

Windows 팁 및 제한 사항

  • MS-DOS®는 UNC 경로 이름을 지원하지 않습니다. 따라서 현재 폴더가 UNC 경로 이름을 사용하는 경우 현재 폴더를 기반으로 하는 DOS command와 함께 system을 실행하면 작업이 실패합니다. 이러한 제한 문제를 해결하려면 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은 먼저 MATLAB_SHELL을 확인하고 이 변수가 비어 있거나 정의되어 있지 않은 경우 SHELL을 확인합니다. SHELL도 비어 있거나 정의되어 있지 않은 경우 MATLAB은 /bin/sh를 사용합니다.

  • system 함수는 기본적으로 stdincommand로 리디렉션합니다. system 함수가 실행되는 동안은 이 리디렉션으로 인해 MATLAB 스크립트 명령과 키보드 선행입력(Type-ahead) 버퍼도 호출된 명령에 전달됩니다. 이러한 동작으로 인해 system이 즉시 실행을 완료하지 않는 경우 잘못된 출력값이 표시될 수 있습니다. stdin 및 선행입력 리디렉션을 비활성화하려면 명령 호출에 서식 지정된 텍스트 < /dev/null을 포함하십시오.

  • system 명령의 환경 변수를 재정의할 수 있습니다. 구문은 UNIX® 셸에 따라 달라집니다. 예를 들어, BASH 셸을 사용하는 경우 다음 코드는 PATH 변수를 myPath로 설정한 다음, 이 값으로 시스템 명령 command를 호출합니다.

    system(['export PATH=' myPath ' ; ' command])
  • 백그라운드에서 운영 체제 명령을 실행하려면 후행 문자로 &command 인수에 포함하십시오. 예를 들어, 'emacs &'를 입력합니다. 종료 상태가 즉시 status 변수로 반환됩니다. 이 구문은, 실행 중에 대화형 사용자 명령 입력값을 필요로 하면서 MATLAB 명령 창에서는 올바로 실행되지 않는 콘솔 프로그램에 유용합니다.

    command에 후행 문자로 &가 포함되는 경우 cmdout은 비어 있게 됩니다.

R2006a 이전에 개발됨