2010-01-28 2 views

답변

5
scala> scala.tools.nsc.io.Process("ls -1 /tmp | wc").stdout foreach println 
     41  63  770 

아니면 REPL 명령이있다 : 2.8 어떤 IO 코드 배송

scala> :sh cat /etc/passwd | wc 
stdout: List[String] = List(  65  185 3667) 

내가 이길 수있는 것보다 더 많은 정지 에너지를 극복 필요로 가고 있었다, 그래서 나는 컴파일러에 모두 넣어. scala.tools.nsc.io에 합리적으로 유용한 것들이 많이 있습니다.

3

다른 운영 체제에서 프로세스/스트림 처리가 다르기 때문에 Java가이를 수행한다고 말하는 것은 옳지 않습니다.이 기능 대부분은 실제로 원시 코드로 전달됩니다.

더 흥미로운 질문은 스칼라

그 대답 (당신이 NIO 기능을 사용하여 스트림을 포장하는 경우 또는 채널)의 리더 나 라이터보다 "관용구"일을 할 수있는 방법이 있는지 질문하는 것?

2.8을 기반으로하는 스칼라 IO 라이브러리 작업이 진행 중일 때 스트림과 채널을 사용하는 더 좋은 방법이 포함되지만 아직 사용할 수는 없습니다.

exec() 프로세스를 처리 할 때 입력에 하나의 스레드를 사용하고 출력을 위해 하나의 스레드를 사용하는 일반적인 방법을 다루는 더 좋은 방법이 될 수도 있습니다.

5

스칼라 2.9으로, 당신은 할 수 있습니다 :

import scala.sys.process.Process 
println(Process("uname -a").!!.contains("x86_64")) 
관련 문제