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