2010-02-04 9 views
1

저는 제 자신의 C++ (하지만 주로 C) 프로그램과 통신해야하는 kgsgtp.jar이라는 제 3 자 자바 프로그램이 있습니다. 자바 프로그램 상태에 대한 문서 :두 프로그램 간의 입출력 통신

=====================

당신은 kgsGtp에 대한 표준 입력이가 연결되어 있는지 확인해야 kgsGtp에 대한 엔진 출력 및 표준 출력은 엔진의 입력에 연결됩니다. 일반적으로이 작업을 수행하는 가장 쉬운 방법은 엔진에서 kgsGtp를 분기하고 실행하는 것입니다. 이제 =====================

나는 합리적으로 유능한 프로그래머이고 내가 아마 모든 것을, 주어진 몇 가지 준비 할 수 있다고 생각 더 많은 단서. 나는 그 설명이 erm 10으로 확장되었다고 생각한다. 3과 1/2 대신 라인을 사용하면 시간이별로 들지 않습니다.

내 문서에서 WinExec() 또는 CreateProcess()를 사용하여 문서를 포크하는 것이 무엇을 의미하는지 궁금합니다. 내 프로그램에서 Java 프로그램을 실행 하시겠습니까? 또한 올바른 함수를 사용할 때 다른 프로그램의 stdout에 해당하는 사실이 자동으로 일어날 것이라고 추측합니다. 당신이 필요로하는 무엇

+0

내가 설명은 유닉스 환경이라고 생각합니다. –

+0

어제 같은 사용자가 어제 요청한 질문 : @stackoverflow.com/questions/2186648/stdin-stdout-communication-between-java-program-and-c-program-under-64-bit-window –

+0

@neil. 아니야. java 프로그램은 하나 이상의 메소드가 통신을 시작할 수있게합니다. 처음에는 실패 했으므로 이제는 다른 방법을 사용하려고 시도하고 있습니다. – Mick

답변

4

, 파이프(), dup2가(), 포크()/간부의 순서() 호출 것있을 수 있습니다 창에) (POSIX의 DUP의 동등 이것을 사용하십시오.

denis의 답변 코드 스 니펫 (How do I get console output in C++ with a Windows program?)을 참조하십시오.

편집 : 더 완벽한 예는 여기에 있습니다 : http://support.microsoft.com/kb/190351

+0

그건 유망 해 보입니다 ... 제가 이걸 이해하고 있는지 다시 한번 확인해 보도록하겠습니다. 코드에서 "// readfile 및/또는 writefile"이라는 주석에 도달하면 ... printf()에서 teste.exe의 stdin으로 가고 그 반대도 마찬가지입니다. – Mick

+0

아니요, hread 핸들에서 읽음은 teste.exe의 stdout/err에서 읽음을 의미합니다. 이 예에서는 teste.exe의 stdin을 연결하지 않지만 비슷합니다. 다른 파이프를 만들고 STARTUPINFO 구조에 hStdInput을 설정합니다. 다른 예에 대한 링크를 추가했습니다. – Anonym

+0

도움 주셔서 감사합니다. – Mick

0

는 설명 유닉스에 대한 것을 this

관련 문제