core.sys.posix.unistd
の中にある。使い方はforkそのまま。
import std.stdio; import core.thread; import core.stdc.stdlib; import core.sys.posix.unistd; void main() { auto pid = core.sys.posix.unistd.fork(); if (pid == 0) { writeln("child working..."); Thread.sleep(dur!("seconds")(10)); _Exit(0); } else { writeln("parent working..."); Thread.sleep(dur!("seconds")(20)); exit(0); } }
ちなみに親プロセスを終了するときはexit(0)
で、子プロセスを終了するときには_Exit(0)
で抜ける(どちらもcore.stdc.stdlib
の中で定義されている)。この2つの関数の違いは、標準入出力のデータを終了時にフラッシュするかしないか、というところらしい。