On Mon, Sep 15, 2014 at 11:36:54PM +0000, AsmMan via Digitalmars-d-learn wrote: > Someone said somewhere that call std.c.process.exit() isn't the proper > way to exit from a D program since it doesn't terminate some phobos > stuff. So what should I use instead of? or there's no a replacement?
AFAIK, there is currently no replacement. I personally use an ExitException and put a catch block in main(): class ExitException : Exception { int status; this(int _status=0, string file=__FILE__, size_t line=__LINE__) { super("Program exit", file, line); status = _status; } } void exit(int status=0) { throw new ExitException(status); } ... int main() { try { ... } catch(ExitException e) { return e.status; } return 0; } The catch is that this may or may not work correctly in multithreaded programs, because the exception may happen in a different thread than the one main() is running in, and there isn't any nice way to terminate other still-running threads after catching such an exception. There has some discussion as to how to implement this, but AFAIK no good solution was found. See also: https://issues.dlang.org/show_bug.cgi?id=3462 But at least, for single-threaded programs, the above ExitException should work reasonably well. T -- Almost all proofs have bugs, but almost all theorems are true. -- Paul Pedersen