2011-09-28 3 views
2

,Java에서 UNIX 터미널을 실행하고 명령을 보내는 방법은 무엇입니까? 항목에 대해서는


Process proc = null; 
    try { 
     String[] cmdss= {"gnome-terminal"}; 


     proc = Runtime.getRuntime().exec(cmdss, null, wd); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

아래의 코드는 단말 형태 우분투 실행.

termnal을 실행 한 후 어떻게 터미널에 명령을 실행합니까?

예 : 터미널을 실행 등 "LS"

+0

당신은 대신 쉘 명령어를 사용하는 자바에서 일을하려고하든해야한다. – SLaks

+0

안녕하세요, 나는 그것을하고 싶지만 그게 나를위한 선택 사항이라고 생각하지 않습니다. 이것은 스크립트 실행과 별개로 사용자가 특정 스크립트를 실행 한 후 y/n과 같은 명령을 터미널에 입력해야하기 때문일 수 있습니다. 나는 자바 인터페이스에서 그렇게하는 방법을 잘 모르겠습니다. –

+1

실제로 무엇을하려고합니까? 별도의 질문을해야합니까? – SLaks

답변

2

당신은 그것을 수행해야한다 무엇을 명령 행에서 gnome-terminal 몇 가지 옵션을 줄 수있는 명령을 실행합니다.

gnome-terminal -e /my/fortran/program 

-x 옵션은 당신에게 거의 같은 혜택을 제공하지만, 별도의 단어로 명령 줄을 분할 할 수 있습니다.

-e-x은 프로그램의 표준 입력과 출력을 터미널에 연결하는 동안 선택적 인수를 사용하여 프로그램을 실행합니다. 따라서 사용자는 단말기와 올바르게 상호 작용할 수 있습니다.

예 :

gnome-terminal -x bash -c "ls; echo '<enter>'; read" 

이 터미널을 열고 "프로그램"bash을 실행합니다. bash두 개의 인수를 갖습니다. -cls; echo ....; read입니다. -c 옵션을 사용하면 bash를 구문 분석하고 다음 인수를 실행할 수 있습니다. 그러면 ls이 표시되고 echo ...이 표시되고 read이 반환 키를 기다립니다.

자바에서는 적절하게이 같은 배열에 인수를 분리해야합니다

String cmd[] = {"gnome-terminal", "-x", "bash", "-c", "ls; echo '<enter>'; read" }; 
+0

와우 .. 고마워 .. 정확히 내가 원하는 것처럼 작동 .. –

+0

또한 expect와 같은 프로그램을 사용하여 대화 형 프롬프트에 대한 응답을 스크립트 할 수 있습니다. 그것은 마치 당신이 겪고있는 것처럼 보입니다. – Kevin

+0

케빈, 그건 내 진짜 의도 였어. 그러나, 나는 .NET/Windows 기반 프로그래머이지만 java/Unix 프로그래머가 아니기 때문에 그 일을 수행하는 방법을 알지 못합니다. 그래서 나는 "기대하는"일에 완전히 단서 있습니다. –

관련 문제