Skip site navigation (1)Skip section navigation (2)
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>