2012-08-16 4 views

답변

4

그럼 당신이 명령을 실행할 Apache Commons Exec 라이브러리에서 DefaultExecutor를 사용할 수있는 자바 응용 프로그램에서 실행 또는 ProcessBuilder를 사용하지 않고 명령을 실행하는 방법에 대한 아이디어가 있으면 관심이 있지만, 내부적으로는 java.lang.Runtimejava.lang.Process을 사용합니다.

아파치 명령 실행 API가 더 정교하고 Java 런타임보다 모든 기능을 제공하므로 런타임에이 라이브러리를 사용하는 것이 좋습니다. 또한 Exit 값을 처리합니다.

+0

이 설명에 설명 된 중단 문제를 처리합니까? - http://stackoverflow.com/a/5483880/537503? –

0

가능한 방법은 많습니다. 그러나 나는 당신의 동기를 이해하지 않고 그것들을 바람직하다고 부를 수는 없습니다.

예를 들어, C 또는 Perl 또는 다른 언어로 프로그램을 작성하고 소켓에서 수신하도록합니다. 그런 다음 자바 프로그램을 소켓에 연결하고 스폰하기위한 프로그램 이름, 인수 등을 포함한 메시지를 보낼 수 있습니다. 리시버 프로그램은 계속 진행할 수 있습니다.

+0

맞습니다. 이것에 대한 아이디어는 ls, pwd, cd 등과 같은 기본 명령에 응답하는 java 서버 응용 프로그램을 만드는 것입니다. – tosi

0

유닉스 명령을 실행하는 방법은 두 가지가 있습니다

  1. 당신은 당신이 공유 라이브러리에 액세스 할 수 JNI/JNA를 사용할 수 있습니다 java.lang.Runtimejava.lang.Process
  2. 을 사용할 수 있습니다가. 따라서 이것을 사용하여 OS 레벨 명령에 액세스하여 프로세스를 만들 수 있습니다 (Unix에서는 system()exec*()). 그것은 바로 얻을 어렵다 결국, 당신은, 당신은 단지 기능 필요한 경우 Runtime.exec()

    와 완전히 동일한 기능을 가지고 뭔가 종료됩니다 :

두 번째 방법은 사용하지 않는 것이 좋습니다 Java에서 명령을 다시 구현할 수 있습니다. 예를 들어, ls을 구현하려면 File.listFiles()

관련 문제