2011-10-31 1 views
1

cmd에 명령을 보낸 다음 출력을 다시 가져 오는 응용 프로그램이 있습니다 (출력 캡처). MS Windows 특정 API를 사용하지 않고 어떻게 C++을 사용하여이 작업을 수행 할 수 있습니까? 이 방법이 크로스 플랫폼 (예 : 리눅스 터미널의 경우)이 될 수 있습니까? 그건 그렇고 XP SP3에서 우승 중입니다.C++을 사용하여 명령 프롬프트 (CMD)와 통신하려면 어떻게합니까?

사실 입/출력의 방향을 바꾸는 것을 의미합니다. 예를 들어, cmd에서 "make"명령을 실행하고 오류 메시지가 캡처되면 (응용 프로그램으로 리디렉션) 오류 메시지가 표시됩니다.

+0

질문은 매우 불분명합니다. 별도의 프로세스를 시작하고 입출력을 리디렉션해야합니까? 아니면 그냥 물건을 인쇄하고 콘솔에서 읽는 방법을 묻는 것입니까? –

답변

2

: 자주 더 좋을 수있는 광범위한 "도구 상자 은유"에 맞게 대신 프로그램에서 자식 프로세스를 시작 피할 수 있다면 ...

http://en.wikipedia.org/wiki/Unix_philosophy

그러나 만약

가가 아니다 프로젝트에 적합한 지 확인하려면 Boost.Process을 확인하십시오.

기타 : Qt (어떤 경우에도보기 좋음)를 사용하는 경우 QProcess도 있습니다.

+0

고마워, 정확히 내가 원했던거야. – Amani

0

기본적으로 대부분의 시스템은 키보드에서 표준 입력을 얻습니다. 따라서 cin은 일반적으로 사용자로부터 정보를 얻을 것으로 예상되지만, 다른 소스로 리디렉션 될 수있는 경우가 많습니다.

cout << "How old are you?" << endl; 
int age; 
cin >> age; 
1

는 그냥 일반 CIN하고 C의 ++가 제공하는 COUT를 사용할 수 없습니다 :

당신이 뭔가를 할 수 있습니까? (물론 프로그램이 GUI 프로그램이라면 cin과 cout은 Windows AllocConsole() 명령을 호출하지 않으면 유용하지 않을 것입니다 ...하지만 이것은 Windows가 작동하는 방식 일뿐입니다. 리눅스 등 #ifdef WIN32를 호출 할 수 있습니다.

1

C89 및 C99 표준의 일부인 기능은 Linux 및 Windows에서 사용할 수 있으며 C/C++에서 명령을 실행할 수 있습니다.

언급 한 바와 같이
+0

그러나이 기능을 사용하면 출력을 재 지정할 수 없습니다. – Amani

+0

항상 temp result.txt 파일로 출력 한 다음 파일을 읽을 수 있습니다. – Carth