C++ 명령줄 실행
이 기사에서는 C++ 프로그램을 통해 명령 프로세서에서 명령을 실행하는 system()
메서드에 대해 간략하게 설명합니다.
C/C++는 CMD 명령을 실행하기 위해 명령행 처리기를 실행할 수 있는 다른 프로세스를 생성하는 부담 없이 이를 수행할 수 있는 기능을 제공합니다.
system()
메서드를 사용하여 C++에서 명령줄 명령 실행
system()
함수는 오랫동안 C 표준 라이브러리의 일부였으며 추가 라이브러리 없이 C++ 코드에 포함할 수도 있습니다. 이 함수는 호출 프로세스에서 쉘 명령을 실행합니다.
그러나 system()
은 호출 프로그램이 단일 자식 프로세스를 생성하고 종료될 때까지 신속하게 대기해야 하는 특정 사용 사례를 위해 설계되었다는 점에 유의해야 합니다.
결과적으로 이 기능은 시스템 API 인터페이스의 일부로 사용 가능한 여러 시스템 호출을 사용하여 구현됩니다.
Linux 환경에서 프로그래머는 새 자식 프로세스의 생성 및 삭제를 제어하는 fork
, exec
및 wait
기능의 골칫거리를 겪을 필요가 없습니다.
C++에서 system()
메서드의 구문, 매개변수 및 반환 값
이 함수의 구문은 다음과 같습니다.
int system(const char* cmd_text);
system()
함수에 전달되는 유일한 매개변수는 명령 텍스트를 포함하는 char
배열입니다. 명령 프로세서는 이 명령 텍스트를 실행합니다.
명령 프로세서의 가용성을 확인하기 위해 이 함수에 대한 매개변수로 Null
포인터를 전달할 수 있음을 기억하십시오.
명령이 이 함수에 매개변수로 전달되면 system()
은 일반적으로 해당 명령의 종료
상태를 반환합니다. 그래도 때때로 반환 값은 명령과 유틸리티에 따라 다릅니다.
명령 프로세서의 가용성을 확인하기 위해 Null
포인터가 전달되었다고 가정합니다. 이 경우 명령 프로세서를 사용할 수 없으면 0
을 반환하고 그렇지 않으면 0이 아닌 값을 반환합니다.
C++ 실행 명령줄을 보여주는 예제 코드
다음 예는 date
명령줄 유틸리티를 실행하여 현재 시스템 날짜를 인쇄하는 system()
함수의 가장 기본적인 응용 프로그램을 보여줍니다.
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
system("date");
return 0;
}
다음과 같은 출력이 생성됩니다.
Sat Sep 10 09:17:19 PM UTC 2022
명령 프로세서가 있는지 여부를 먼저 확인한 다음 system()
기능을 사용하여 ls -l
명령을 실행하는 또 다른 예를 살펴보겠습니다.
#include <stdlib.h>
#include <iostream>
using namespace std;
int main() {
if (system(NULL)) {
cout << "Command Processor OK" << endl;
cout << "Running ls command" << endl;
system("ls -l");
} else
cout << "Command Processor not found!!" << endl;
return 0;
}
다음과 같은 결과가 표시됩니다.
Command Processor OK
Running ls command
total 24
-rwxr-xr-x 1 root root 16744 Sep 10 21:18 jdoodle
-rw-r--r-- 1 root root 315 Sep 10 21:18 jdoodle.cpp