program_system — std::system

program_system — std::system

std::system호스트 환경의 명령 프로세서(예: /bin/sh, cmd.exe)를 command 인자로 호출해요. <cstdlib> 헤더에 있어요.

구현 정의 값을 반환해요 (보통 명령의 종료 상태).

출처: cppreference

본문

// <cstdlib> 헤더
int system( const char* command );

사용 예

#include <cstdlib>

// 셸 명령 실행
int r = std::system("echo hello");

동작

  • command를 호스트의 명령 프로세서로 전달해 실행해요.
  • command가 널 포인터이면, 명령 프로세서가 존재하는지 검사를 수행해요 (있으면 0 이외, 없으면 0).
if (std::system(nullptr)) {
    // 명령 프로세서 사용 가능
}

주의

  • 보안 위험command에 사용자 입력을 그대로 넣으면 셸 인젝션(명령 주입) 위험이 있어요. 절대 신뢰할 수 없는 입력을 직접 넣지 마세요.
  • 이식성 제한 — 정확한 동작(쉘 종류, 반환 코드)은 구현 정의예요.
  • 자식 프로세스가 완료될 때까지 블로킹해요.
// 위험한 예: 사용자 입력을 그대로 명령에
// std::string cmd = "ls " + user_input;  // 주입 위험!

std::system은 외부 명령·스크립트를 실행하는 편리한(그러나 주의가 필요한) 방법이에요. 보안·이식성이 중요한 코드에서는 피하고, 더 안전한 프로세스 실행 수단을 고려해요.

더 알아보기 (Learn more)

cppreference