내가 누구의 JavaDoc 내용의 Runtime.getRuntime().exec(...)
방법을 사용하여 예를 들어, 별도의 프로세스에서 명령을 실행 : I 프로세스가 살 것이다 것을 알고,이 과정에서 스트림을 어떻게해야합니까 무엇외부 프로세스에서 불필요한 스트림을 어떻게 처리합니까?
Executes the specified command and arguments in a separate process.
을 Java 프로그램이 존재할 때까지? (이것은 세부 사항이지만 Java 프로그램은이 프로세스를 중지시키고 프로세스 자체는 더 이상 실행되지 않는 Java 프로그램을 발견하면 프로세스 자체가 안전함을 내장하고 있습니다.)
이 프로세스가 출력을 전혀 생성하지 않는다고 생각하면 (예를 들어 모든 오류 메시지와 표준 출력이/dev/null로 리디렉션되고 모든 통신이 파일/소켓/기타를 사용하여 수행되기 때문에) 무엇을해야합니까? 입력 스트림에?
stdout/stderr을 읽으려고 하나 또는 두 개의 Java 스레드를 실행해야합니까?
stdout/stderr을 전혀 생성하지 않는 Java 프로그램에서 생성 된 긴 수명의 외부 프로세스를 처리하는 올바른 방법은 무엇입니까?
편집 기본적으로 나는 는/dev/ null로 모든 리디렉션 확인합니다 다른 쉘 스크립트에서 쉘 스크립트를 래핑. 내 "outter"쉘 스크립트 (모든 것을/dev/null로 리디렉션하는 경우)가 여전히 stdout 또는 stderr에 생성되는 경우 Un * x가 호환되지 않을 것이라고 확신합니다. 그러나 나는 어쨌든 애플 리케이션의 수명주기 동안 스레드를 "아무것도를 위해"실행하도록되어 있어야한다는 생각이 들었다. 정말 마음을 불허합니다.
흥미 롭습니다. 내 질문을 편집합니다 ... 기본적으로 모든 경로를 */dev/null *로 리디렉션하는 다른 쉘 스크립트에서 쉘 스크립트를 래핑합니다. * "outter"쉘 스크립트 (*/dev/null *로 모든 것을 리디렉션하는 스크립트)가 여전히 * stdout * 또는 * stderr *에서 아무 것도 생성하지 않으면 내 Un * x가 호환되지 않을 것이라고 확신합니다. – SyntaxT3rr0r
@ SyntaxT3rr0r - 이해합니다. 나는 편집증 환자 중 한 명 일 뿐이야. :) 나는 여분의 스레드가 아마도 불필요하다는 것에 동의한다. – rfeak