diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-12-19 19:04:55 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-12-19 19:04:55 +0800 |
commit | 497f044545d8a8299c963e8e3dd5241882270362 (patch) | |
tree | d4e2fa124983377df9c2f8631ee4804a97cd74db /scalalib/backgroundwrapper/src/BackgroundWrapper.java | |
parent | b44fe2753c62349b3b133d1da0e41a19178233a1 (diff) | |
parent | de175e69977082e35539097a54d381e465dddf8e (diff) | |
download | mill-497f044545d8a8299c963e8e3dd5241882270362.tar.gz mill-497f044545d8a8299c963e8e3dd5241882270362.tar.bz2 mill-497f044545d8a8299c963e8e3dd5241882270362.zip |
Merge branch 'master' into bump-zinc
Diffstat (limited to 'scalalib/backgroundwrapper/src/BackgroundWrapper.java')
-rw-r--r-- | scalalib/backgroundwrapper/src/BackgroundWrapper.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/scalalib/backgroundwrapper/src/BackgroundWrapper.java b/scalalib/backgroundwrapper/src/BackgroundWrapper.java new file mode 100644 index 00000000..02ee23eb --- /dev/null +++ b/scalalib/backgroundwrapper/src/BackgroundWrapper.java @@ -0,0 +1,40 @@ +package mill.scalalib.backgroundwrapper; + +public class BackgroundWrapper { + public static void main(String[] args) throws Exception{ + String watched = args[0]; + String tombstone = args[1]; + String expected = args[2]; + Thread watcher = new Thread(new Runnable() { + @Override + public void run() { + while (true) { + try{ + Thread.sleep(50); + String token = new String( + java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(watched)) + ); + if (!token.equals(expected)) { + new java.io.File(tombstone).createNewFile(); + System.exit(0); + } + }catch(Exception e){ + try { + new java.io.File(tombstone).createNewFile(); + }catch(Exception e2){} + System.exit(0); + } + + } + } + }); + watcher.setDaemon(true); + watcher.start(); + String realMain = args[3]; + String[] realArgs = new String[args.length - 4]; + for(int i = 0; i < args.length-4; i++){ + realArgs[i] = args[i+4]; + } + Class.forName(realMain).getMethod("main", String[].class).invoke(null, (Object)realArgs); + } +} |