안녕하세요? 마이콜타이순 입니다. 쉘에서 특정 커맨드를 실행해서 가져오려 할 때 쉘스크립트가 아닌 C++ 을 사용해서는 어떻게 할 수 있는지 알아보았습니다.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
std::string getResultFromCommand(std::string cmd) {
std::string result;
FILE* stream;
const int maxBuffer = 256; // 버퍼의 크기는 적당하게
char buffer[maxBuffer];
cmd.append(" 2>&1"); // 표준에러를 표준출력으로 redirect
stream = popen(cmd.c_str(), "r"); // 주어진 command를 shell로 실행하고 파이프 연결 (fd 반환)
if (stream) {
while (fgets(buffer, maxBuffer, stream) != NULL) result.append(buffer); // fgets: fd (stream)를 길이 (maxBuffer)만큼 읽어 버퍼 (buffer)에 저장
pclose(stream); // 파이프 닫는 것 잊지 마시고요!
}
return result;
}
// 실행 예제 ("ls -la" 의 결과값 받기)
int main (){
std::string ls = GetStdoutFromCommand("ls -la");
std::cout << "LS: " << ls << std::endl;
return 0;
}
'개발 관련 기타 > C++' 카테고리의 다른 글
[프로그래머스] (C++) 점프와 순간이동 (0) | 2019.12.02 |
---|---|
[프로그래머스] (C++) 최댓값과 최솟값 (0) | 2019.11.28 |
[프로그래머스] (C++) 단체사진 찍기 예제 테스트 방법 (0) | 2019.11.28 |
[C++] std::max, std::max_element 또는 std::sort 에서 compare 함수의 역할 (0) | 2019.11.21 |
[C++] 클래스 멤버 함수 (class member function) 를 static (정적) 으로 선언 하는 이유 (0) | 2019.11.20 |