2017-01-20 13 views
2

내 스칼라 스크립트를 수신 서브 프로세스를 방지하는 방법이 같은 하위 프로세스를 만듭니다스칼라 : CTRL + C/컨트롤 + C/SIGINT

val exitValue = Process(Seq("bash", "-c", command), dir) ! processLogger 

명령이 들어있는로 "mvn clean package" 또는이 문제를 테스트하기 위해 "sleep 20".

사용자가 "중지"대신 "복사"를 의미했기 때문에 어떤 이유로 스크립트가 SIGINT를 가로 챌 필요가 있습니다 (수시로 발생합니다). 나는이 같은 신호 처리기를 추가하여 달성 : 서브 프로세스가 CTRL + C가 중지 만들기 때문에이 작동하지 않습니다 실행 그러나

Signal.handle(new Signal("INT"), this) 

override def handle(sig: Signal) 
{ 
    log.warn("Ignoring SIGINT (Ctrl+C). Press [Esc] instead.") 
} 

. 서브 프로세스가 SIGINT를 무시하도록 내가 할 수있는 일은 무엇입니까? 나는 파이썬을위한 해결책을 찾았습니다 : Python: How to prevent subprocesses from receiving CTRL-C/Control-C/SIGINT Scala와 비슷한 것이 있습니까?

답변

1

bash을 시작 했으므로 trap 기본 제공 명령을 사용하여 하위 프로세스의 신호를 무시할 수 있습니다.

는 그냥 command에 (세미콜론 포함) trap '' SIGINT; 앞에 추가 :

Process(Seq("bash", "-c", "trap '' SIGINT;" + command)) 
+0

감사합니다 많이! 나는 이것을 달성하기 위해'파이썬 (python) '이라고 부르기까지했다. – mbee