www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - orce exit, possible?

reply "seany" <seany uni-bonn.de> writes:
is there a keyword like exit, that i can call  in any function to 
force the code to exit with a particular status to the shell?

I tried the word exit itself, it did not work
Nov 21 2013
parent reply "Kelet" <kelethunter gmail.com> writes:
On Thursday, 21 November 2013 at 19:27:51 UTC, seany wrote:
 is there a keyword like exit, that i can call  in any function 
 to force the code to exit with a particular status to the shell?

 I tried the word exit itself, it did not work
C's exit function should be available to you if you import std.c.stdlib;
Nov 21 2013
parent "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Thu, Nov 21, 2013 at 08:38:18PM +0100, Kelet wrote:
 On Thursday, 21 November 2013 at 19:27:51 UTC, seany wrote:
is there a keyword like exit, that i can call  in any function to
force the code to exit with a particular status to the shell?

I tried the word exit itself, it did not work
C's exit function should be available to you if you import std.c.stdlib;
That works, but bypasses D runtime cleanup functions. My workaround is to make use of the exception system: class ExitException : Exception { int status; this(int _status) { super("Program exit"); status = _status; } } // never returns void exit(int status=0) { throw new ExitException(status); } int main(string[] args) { try { // actual code here ... exit(1); // should exit with status 1 ... } catch(ExitException e) { return e.status; } catch(Exception e) { // do your usual exception handling here } return 0; } It's kinda ugly, but you could encapsulate this in a custom library: say rename main() to dmain(), then have the library provide the actual main() with the try-catch block, and possibly with some other niceties as well. Then you could just use this library in all your programs. The use of exceptions may slow things down a bit, but at program exit time, that's really the least of your concerns so it shouldn't matter at all. T -- Latin's a dead language, as dead as can be; it killed off all the Romans, and now it's killing me! -- Schoolboy
Nov 21 2013