2012-10-24 4 views
1

Capturing console output from a .NET application (C#)MSVC의 C++ 나는 C# .NET을 C++을 사용하고 있지 않다 것을 제외하고는 그 질문에 요구되는 비슷한 일을 꿔

에서 콘솔 응용 프로그램을 실행. 약간의 내 C++ 코드에서 다시 작성해야하는 일부 함수가있는 작은 잘 테스트 된 Java 응용 프로그램이 있고 결과를 동일하게 테스트 할 부스트 단위를 사용하여 몇 가지 단위 테스트를 작성하고 싶습니다. 기본적으로 C++에서이 java 명령 행 응용 프로그램을 호출하려고합니다. 가능하다면 JNI를 사용하지 말고 C++ 코드를 통해 다른 명령 줄 응용 프로그램을 실행하는 것이 좋습니다.

내 C++ 응용 프로그램에서 콘솔 응용 프로그램을 호출하고 콘솔에서 생성 된 모든 출력을 캡처하려면 어떻게합니까? (나는 중간 파일에 글을 쓸 필요가 없다.하지만 그렇게하는 것이 유일한 방법이다.)

이것은 다소 간단해야하지만 나는 엄청난 양의 웹에서 키워드를 검색 할 때 문제가 발생하면 다른 것들에 대한 결과를 찾는 경향이 있습니다 (C# 및 명령 줄 컴파일은 2 가지 예가됩니다). 이 질문이 중복이라면 나는 전혀 놀라지 않을 것이지만 똑같은 또 다른 질문을 찾을 수는 없습니다. 그것이 이미 존재한다면, 나는 발견 된 다른 것에 대한 링크를 통해이 질문을 닫는 것에 행복 할 것입니다.

답변

2

표준 C++ 라이브러리에서 프로세스 처리 기능이 없기 때문에 대상으로하는 운영 체제에 따라 다릅니다. Windows의 경우 예를 들어 CreatePipe 함수를 사용하여 두 개의 파이프를 만들어 Java 응용 프로그램의 입력과 출력을 리디렉션 한 다음 CreateProcess 함수를 사용하여 Java 응용 프로그램을 실행합니다. 이 here의 예가 있습니다.

하지만 대신 JNI를 대신 사용하는 것이 좋습니다.이 방법은 광년으로 파이프보다 interop/IPC가 더 좋습니다. 파이프 루트를 통과한다면 결국 깨닫게 될 것입니다.

관련 문제