C++ 명령줄 실행

Naila Saad Siddiqui 2023년10월12일
C++ 명령줄 실행

이 기사에서는 C++ 프로그램을 통해 명령 프로세서에서 명령을 실행하는 system() 메서드에 대해 간략하게 설명합니다.

C/C++는 CMD 명령을 실행하기 위해 명령행 처리기를 실행할 수 있는 다른 프로세스를 생성하는 부담 없이 이를 수행할 수 있는 기능을 제공합니다.

system() 메서드를 사용하여 C++에서 명령줄 명령 실행

system() 함수는 오랫동안 C 표준 라이브러리의 일부였으며 추가 라이브러리 없이 C++ 코드에 포함할 수도 있습니다. 이 함수는 호출 프로세스에서 쉘 명령을 실행합니다.

그러나 system()은 호출 프로그램이 단일 자식 프로세스를 생성하고 종료될 때까지 신속하게 대기해야 하는 특정 사용 사례를 위해 설계되었다는 점에 유의해야 합니다.

결과적으로 이 기능은 시스템 API 인터페이스의 일부로 사용 가능한 여러 시스템 호출을 사용하여 구현됩니다.

Linux 환경에서 프로그래머는 새 자식 프로세스의 생성 및 삭제를 제어하는 fork, execwait 기능의 골칫거리를 겪을 필요가 없습니다.

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