2017-04-06 7 views
0

node.js의 명령 행 인터페이스로 애플리케이션을 사용하는 방법을 살펴 보겠습니다. 다음은 node.js 코드입니다.node.js 하위 프로세스에서 CLI 응용 프로그램을 사용하는 방법은 무엇입니까?

var spawn = require('child_process').spawn; 
var child = spawn('java', ['HelloWorld']); 

child.stdout.pipe(process.stdout); 
child.stdin.write("tratata\r\n;"); 

child.stdin.end(); 

java HelloWorld cli app가 실행됩니다.

여기에 자바 코드 :

import java.io.Console; 

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("started"); 

     Console console = System.console(); 

     while (true) { 
      String s = console.readLine(); 
      System.out.println("Your sentence:" + s); 
     } 
    } 
} 

그러나 그것은 작동하지 않습니다. child.stdin.write 실행 파일 - 아무 일도 일어나지 않습니다.

답변

0

면책 조항 : Java에 관해서는 알지 못합니다.

내 생각 엔 java.io.Console 그냥함으로써 stdin/stdout/stderr 장치가 노드에 의해 전달되는 우회 (대부분의 유닉스 계열 OS'es에 /dev/tty) 자체를 콘솔 장치를 열어처럼, 표준 입력에서 읽는 것보다 더 많은 작업을 수행한다는 것이다. 당신이 java.io.BufferedReader를 사용하는 경우

, 그것은 잘 작동 :

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.BufferedReader; 

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("started"); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

     while (true) { 
      try { 
       String s = reader.readLine(); 
       if (s == null) return; // end of stream reached 
       System.out.println("Your sentence:" + s); 
      } catch(IOException e) { 
      } 
     } 
    } 
}