Hello Perl Monks,

I have a problem with my client socket server. I have a daemon running in the same script as I have the web server running. the daemon is catching the term (as well as the int, pipe, and hup) signal. when the read process sends a term signal via the kill command to its corresponding write process, I think it is being caught by the daemon code. is there a way to stop this.

also, do you see any problems in the logic of my code? this is my first time doing this and I have already caused serious problems testing my daemon/web server code on my host providers servers. it was looping endlessly and freezing up their system. this is not that code. this is the code with all the email notifications and possible email loops taken out.

the daemon worked great as a stand alone script and the web server worked great as a stand alone script as well. the problems started when I combined the two scripts into one script.

therefore, I wanted to ask the monks about this combined code before trying it in real time again.

#load posix support for trapping signals use POSIX(); #start of creating a cross-platform method of determining the current +script path and name use FindBin(); use File::Basename(); use File::Spec::Functions; my $script = File::Basename::basename($0); my $SELF = catfile $FindBin::Bin, $script; #end of creating a cross-platform method of determining the current sc +ript path and name #create a new signal set my $sigset = POSIX::SigSet->new(); #create the action you want performed on terminate signals my $termAction = POSIX::SigAction->new('sigTERM_handler', $sigset, &POSIX::SA_NODEFER); #attach the signal to the action you want performed on terminate signa +ls POSIX::sigaction(&POSIX::SIGTERM, $termAction); . . . #the above would be done for the int, pipe, and hup signals. #start of the sub to run when the terminate signal arrives sub sigTERM_handler { #store the signal sent by the system my $HTPad_signalCaught = shift; #run the handler for all exit signals &HTPad_exitSignalHandler("Terminate", $HTPad_signalCaught); } #end of the sub to run when the terminate signal arrives #start of the handler for all exit signals sub HTPad_exitSignalHandler { #reinstate the passed variables my $HTPad_exitType = shift; my $HTPad_signalCaught = shift; #this daemon handler would process the int, pipe, and hup signals. unless (exec($SELF, @ARGV)) { Die "Could not restart the script after a $HTPad_signalCaught signal + was received: $!"; } } #end of the handler for all exit signals #ignore child signals in order to do automatic child reaping $SIG{CHLD} = 'IGNORE'; #enter the web server &HTPad_webSserver(); #start of the web server sub HTPad_webSserver { . . . open a socket . . . #start of the parent server accepting clients while ($HTPad_client = $HTPad_server->accept()) { . . . parent fork() a write process for the client . . . process data from the client . . . #close the write child connection close($HTPad_client); #exit the write child to keep it from accepting new clients exit(1); #should this be 1 or something else? parent fork() a read process for the client . . . process data from the client . . . #send sig term to write child when client closes connection kill ("TERM", $clientWritePID); #close the read child connection close($HTPad_client); #exit the read child to keep it from accepting new clients exit(1); #should this be 1 or something else? } #end of the parent server accepting clients } #end of the web server

...waiting for the world to change...

In reply to getting a posix daemon and a web server to work together by Hardy

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.