Date: Tue, 23 Mar 1999 07:32:50 +1000 From: Greg Black <gjb@comkey.com.au> To: Karl Pielorz <kpielorz@tdx.co.uk> Cc: Masahiro Ariga <mariga@cd.mbn.or.jp>, freebsd-questions@FreeBSD.ORG Subject: Re: how to die gracefully Message-ID: <19990322213250.9969.qmail@alpha.comkey.com.au> In-Reply-To: <36F65B11.610DAE9D@tdx.co.uk> of Mon, 22 Mar 1999 15:00:33 GMT References: <000501be7472$3bbeb400$064ca8c0@gateway> <36F65B11.610DAE9D@tdx.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
> > First loaded program works fine,and enters Ctl^C to exit it,but if I execute > > it second time,it shows abnormalties like taking time to start to send data > > to clent,and badly enough,it responds not at all. > > I presume it results from not closing sockets,or residual memory or > > something,but I'm not sure. > > AFAIK - when your program quit's, the O/S should free up it's memory and close > it's files etc. (as a kind of last-resort) - it's probably not good practice > to rely on this though, especially if your program is designed to run for long > periods of time... This is wrong. The OS reclaims everything when the program exits. > > So,sinior UNIX programers,would you teach me next two questions ? > > > > 1.How should I exit gracefully by pushing Ctl^C. I mean,what should I do to > > recover normal condition in preparation for next execution ? > > Catch the CTRL-C signal, then perform housekeeping & cleanup (i.e. close > files, sockets, freeup memory used etc. - all of which your program should > have tracked etc.), then quit... This begs the question. If it's a client/server interaction, then the issues are probably to do with leaving one end of the connection waiting when the other quits. There's not enough information here to help, and it's not a topic for this list anyway. Get one of the books on client/server programming under BSD (I'd suggest Stevens), study it, find a suitable source of help if you need it, read BSD sources for inspiration, and keep working on it. > > 2.I like to catch the signal when pushed Ctl^C,and make a handler > > routine.Would you tell me what signal I can catch when enterring Ctl^C ? > > SIGQUIT I think - check the man pages out (man signal)... Wrong. It's SIGINT. The QUIT signal is usually attached to Ctl-\ and generates a core dump as well as interrupting the process. -- Greg Black <gjb@acm.org> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990322213250.9969.qmail>