에서 운영자 I가sbt를 사용하여 스칼라에서 외부 프로세스를 실행 중입니다! 윈도우
val success:Int = ("d:\\program.bat" !)
println("started "+success)
program.bat이
@echo off
start "" "d:\notepad.exe"
echo DONE
프로그램이 실제로 바람둥이 서버를 시작하지만, 파이어 폭스에 대한 모든 동일처럼 보이는 내 스칼라 프로그램에서 다음 두 줄 , 메모장 등등 ... 그래서 나는 이것을 notepad.exe로 단순화했다.
나는 메모장을 시작하고 "started 0"을보고 싶다.
이 문제는 코드가 첫 번째 줄과 나던 인쇄에 중지한다는 것입니다 내가 메모장
program.bat의 마지막 줄은
echo DONE
이다 닫을 때까지 "0 시작"과는 DONE입니다 실행이 끝나기 전에 마지막으로 인쇄 된 것이므로 program.bat 내에서 멈추지 않을 것이라고 가정합니다.
내 program.bat 스크립트 끝에 EXIT/B 0을 넣으려고했지만 아무 것도 변경하지 않습니다.
나는 리눅스에서 잘 작동한다고 들었다 (물론 program.sh 사용).
정말로 program.bat에서 메모장을 분리하고 0을 반환하는 방법에 대한 제안이 있으십니까?
답해 주셔서 감사합니다! 이것은 유용한 지식입니다. 하지만 실제로 달성하기를 원하는 것은 program.bat를 "화재 및 잊어 버리기"프로그램이 아닌 "메모 및 메모"프로그램으로 만드는 것입니다. 그렇다면 program.bat가 시작한 프로세스가 종료 될 때까지 종료되지 않습니다. 강제로 종료하고 메모장 종료를 기다리지 않을 수 있습니까? – misiek
나는 너의 포스트를 오해했다. 쉘에서'program.bat'을 실행하면, 메모장을 불과 잊어 버릴 것입니다. 그러나 스칼라가 시작한 프로세스는 모든 하위 프로세스가 종료 된 후에 만 종료됩니다. 여기에는 실행 및 잊어 버린 메모장 프로세스가 포함됩니다. –