■
http://portal.acm.org/citation.cfm?id=1040305.1040313
今年のPOPLにこんなのがあったそうで、まさしく今 quantitative な analysis をテーマにしてる身としてはちょっと読んでみようかなと思ったり。
それはそうとすみいさんもほそやさんも POPL 通ってて自分はさっぱりうだつがあがらんなあとちょっとがっくり
■
http://www.excite.co.jp/News/odd/00081108087433.html
ジョーンズさんの友人の手元に渡るまでの経緯が激しく気になる
fork()
ついでに、plugin から external process を起動して、stdout/stderr を Console につなげるということをやってみた。DebugPlugin をまじめに使うのがスジがいいのはわかってるけど、LaunchConfigurationとかを作らないといけないので、単に fork() して wait() だけしたい!という用途には不向きな気がする。私が誤解してるだけだったらごめんなさい。
- Runtime.exec() で process を起こす
- DebugPlugin.newProcess() で IProcess に attach (Launch の constructor 引数は適当で通った)
- IProcess.getStreamProxy().getOutputStreamMonitor() で IStreamMonitor を取ってくる
- IStreamMonitor.addListener() する。listener は IStreamListener の implementation
- IStreamListener.streamAppended() の中で MessageConsoleStream に書き込む
IStreamListener stdoutListener = new IStreamListener() {
public void streamAppended(String text, IStreamMonitor monitor) {
MessageConsoleStream streamOut = 下のやりかたで作った MessageConsoleStream;
if (streamOut != null) {
streamOut.print(text);
}
}
};Runtime rt = Runtime.getRuntime();
Process p = rt.exec(args);
IProcess proc = DebugPlugin.newProcess(new Launch(null, ILaunchManager.RUN_MODE, null) , p, "");
proc.getStreamsProxy().getOutputStreamMonitor().addListener(stdoutListener);
proc.getStreamsProxy().getErrorStreamMonitor().addListener(stderrListener);