0
이 질문은 두 개의 자바 프로그램 사이의 입출력 방향 재 지정에 관한 내용입니다. 내 문제의 간단한 예제 소스 코드는 아래와 같습니다. 자바 프로그램 간 입출력 공유
이
은 PROG1입니다 : 나는 인터넷 익스플로러가 실행이 성공했는지 확인하기 위해 실행하는 별도의 파일에import java.io.*;
public class prog1{
public static void main(String[] args) throws IOException{
Runtime rt = Runtime.getRuntime();
Process prog2 = rt.exec("java prog2");
System.out.println("prog2 has executed.");
}
}
, 내가 작성한 PROG2는 :
import java.io.*;
public class prog2{
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a string: ");
System.out.println("You entered " + in.readLine() + ". Starting Explorer...");
Runtime.getRuntime().exec("C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe");
}
}
이 내가 볼 것입니다 내가 PROG2를 실행하는 경우 :
> java prog2
Enter a string: hello ** Here the program waited for my input **
You entered hello. Starting Explorer... ** Here Internet Explorer opens a new window **
이것은 내가 PROG1을 실행하면 내가 볼 것입니다 :
> java prog1
prog2 has executed. ** Internet Explorer opens a new window **
prog2는 입력을 요구하지 않으며 아무 것도 출력하지 않았습니다.
> java prog1
Enter a string: hello ** Here I wish for the program to await my input **
You entered hello. Starting Explorer... ** Here I wish for an Explorer window to open **
prog2 has executed.
나는이 문제가 I/O 리디렉션의 좋은 지식이 필요하다고 생각하지만, 나는 불행하게도 그 지역에서 매우 미경입니다 : 내 목표는 발생하는 다음입니다. 모두에게 미리 감사드립니다.
데빈
귀하의 답변은 매우 도움이되었습니다. 고맙습니다. 이제 prog1을 실행하면 "prog2가 실행되었습니다."라는 메시지가 나타납니다. 명령 줄에 다음 줄에 "문자열 입력 :"이 표시됩니다. 이것은 내 목표에 더 가깝지만 거기에 있지는 않습니다. 첫 번째 프로그램이 두 번째 프로그램의 종료를 기다리는 권장 방법이 있습니까? – devneal17
내가 찾고있는 해결책을 찾았습니다. 프로세스 후 prog2 = new ProcessBuilder ("java", "prog2"). inheritIO(). start(); 나는 prog2.waitFor()를 추가했다. 잠재적 인 InterruptedException을 포착 할 수 있습니다. 그것은 내가 원하는 방식으로 정확하게 작동합니다. 다시 감사합니다. – devneal17