Windows API(C言語)のCreateProcess・CreatePipe・DuplicateHandle・ConsoleCtrlHandlerについてメモ。
この辺りについては昔から色んな人が色々書いているので、今回はエラー処理も略さず書くようにしてみた。
プロセスの生成・別プログラムの実行はUNIX(POSIX)のfork~execには似ていないが、パイプとかハンドルの複製とかはUNIX(POSIX)のpipe・dup2に似ている。
でもハンドルの継承まわりは理解できるまで超意味不明だった(爆)
しかしC言語は面倒くさいわー。
今回の例はgccで書いたからまだマシだけど、エラー時もハンドルをちゃんとクローズしようと思ったら、try~finallyが欲しくなる^^;
素直にsetjmp/longjmpを使う方が楽かもしれない(苦笑)
たまにC言語をやってみると、Javaがいかに便利か(C言語の不便な点を改良しようとしたか)よく分かる。
Javaが不便だとか言ってる人は、C言語は絶対出来ないなー。
そんで、そういう人がScalaを覚えたらJavaには戻れないだろうなw