1
일부 "문자열"을 외부 프로그램에 전달하고 피드백을 얻을 수있는 C++ 코드를 작성하는 데 어려움을 겪고 있습니다. 외부 프로그램의 출력을 C++ 코드로 가져 오기
예를 들어 내가 GCC로 C++ 코드를 통과하고 내 원래의 코드로 다시 오류 메시지를 얻을하고 싶은 말은 C에 그 작성 방법을 ++일부 "문자열"을 외부 프로그램에 전달하고 피드백을 얻을 수있는 C++ 코드를 작성하는 데 어려움을 겪고 있습니다. 외부 프로그램의 출력을 C++ 코드로 가져 오기
예를 들어 내가 GCC로 C++ 코드를 통과하고 내 원래의 코드로 다시 오류 메시지를 얻을하고 싶은 말은 C에 그 작성 방법을 ++그것을하는 방법은 두 가지가 있습니다.
FILE* fp = popen("/some/command argument1 argument2", "r");
char input[256];
while (fgets(input, sizeof(input), fp))
{
std::cout << "Got input from command: " << input;
}
다른 더 복잡한 방법으로 (그리고 뒤에서 popen
작동 방법)을을 만드는 것입니다 : 당신은 단지 외부 프로그램의 출력을 읽으려면 간단한 방법은, popen
을 사용하는 것입니다 새 익명 파이프 (pipe
), 새 프로세스 (fork
), 파이프를 사용하는 새 프로세스의 표준 출력을 설정 한 다음 exec
하위 프로세스의 프로그램을 설정합니다. 그런 다음 파이프의 읽기 끝에서 프로그램의 출력을 읽을 수 있습니다. 이것은 좀 더 유연하고 권장되는 방법입니다 (설정하는 것이 더 복잡하더라도). 양방향 통신을 원할 경우 (예 : 외부 프로그램 표준 입력 및 출력에 출력하려는 경우) 또한 유일한 방법입니다.