Sponsored Content
Top Forums Programming How to implement SIGKILL and SIGTERM and print a message? Post 302144559 by norelco55 on Thursday 8th of November 2007 06:04:10 PM
Old 11-08-2007
Question How to implement SIGKILL and SIGTERM and print a message?

Hello,

I am running a webserver that uses sockets, forks, and children. The parent process listens for connections and the child processes the information.

I am trying to figure out why the code I have below SIGTERM, and SIGKILL never fire. I was messing around with the printfs and doesnt seem to be entering the switch for sigterm and sigkill and sighup.

I do have sigint and sighup working.

Can someone help me fix this code so that the server gracefully terminates when a sigkill and sigterm are detected. I was trying to get it so when the signal is recieved to terminate, the printf would write out terminating or something(basically so i know its working).




Code:
//int main code
 //ignore sighup signal, you can log out and server still runs.
    signal(SIGHUP,catcher);

 //stop user from using control c.
    signal(SIGINT, catcher);


    //not working
  //  signal(SIGTERM, catcher);
  //  signal(SIGKILL, catcher);

FUNCTIONS:---------------------------------------------------------------
//gracefully quit on sigterm and sigkill.
void catcher(int sig)
{

  printf ("Caught signal %d\n", sig);
  fflush(stdout);
  switch (sig)
        {
        case SIGINT:

          signal(SIGINT, catcher);
          printf("Control-C not Allowed\n");
          fflush(stdout);
          break;

        case SIGHUP:

          signal(SIGHUP,catcher); /* dont die on sighup */
          printf("SIGHUP Ignored\n");
          fflush(stdout);
          break;


          case SIGTERM:

          signal(SIGTERM, catcher);
          printf("exiting sigterm");
          exit(1);
          fflush(stdout);
          break;

        case SIGKILL:
          printf("sigkilla");
          fflush(stdout);
          signal(SIGKILL, catcher);
          printf("sigkilla");
          exit(1);
          fflush(stdout);
          break;
  }

 

10 More Discussions You Might Find Interesting

1. Programming

signals - SIGTERM

Hi all, I need some urgent help. we are using Dynix/ptx V4.5 on i386, have several processes and instances are running on the box round the clock.we increased the processes recently. We have coded to handle the signals in our programs. Recently, we noticed most of our processes are... (2 Replies)
Discussion started by: reddyb
2 Replies

2. Shell Programming and Scripting

Why SIGKILL will occur?

Hi Gurus, I am executing my Datastage jobs on UNIX operating System. While running the jobs i am getting the following error: main_program: Unexpected termination by Unix signal 9(SIGKILL) Can any one please let me know what are the possible situations where this SIGKILL will arrise? ... (9 Replies)
Discussion started by: choppas
9 Replies

3. Solaris

To print Coloured Prelogin Message on SOLARIS--9................

Hiiii..... Every one...... I am using /etc/issue file to display Pre-login Message on my system, installed with SOLARIS-9. I am getting this Message in White fonts having Black background ( Colour of the Screen)..... So, is there ... (2 Replies)
Discussion started by: prashantshukla
2 Replies

4. Shell Programming and Scripting

Error while trying to print message

Hi all Geting this error while trying to print message as : ./logfunc: print: bad file unit number heres what i m trying to do : log_date="$(date '+%d/%m/%Y %H:%M:%S')" log_type="Message" print "${log_date}: ${log_type}" print -u3 "${log_date}: ${log_type}" this error is due to... (3 Replies)
Discussion started by: Navatha
3 Replies

5. Shell Programming and Scripting

Print a message at specific line on prompt

Hi Friends, I am using HP-UNIX(ksh). I want to print a message at specific line on the prompt screen. For Example: for num in 1 10 3 145 do echo $num // need to print this on the same line for each number sleep 2 done Actual Output: ========== 1 10 3 145 Expected Output:... (5 Replies)
Discussion started by: Niroj
5 Replies

6. Solaris

SIGQUIT and SIGKILL message

Dear All, I have machine with SunOS 5.10 Generic_138888-01 sun4v sparc SUNW,SPARC-Enterprise-T5120. Yesterday there is something at dmesg command : May 25 18:09:02 cacao_launcher: Timeout occured on heartbeat channel, cleanup engaged May 25 18:09:07 cacao_launcher: watchdog : warning,... (0 Replies)
Discussion started by: mbah_jiman
0 Replies

7. Shell Programming and Scripting

How to detect SIGTERM,SIGKILL signal in UNIX

Dear All We have JBOSS server running on Linux we need to track Graceful Shutdown(SIGTERM) and Forceful Shutdown(SIGKILL) timestamp and write it into one file, I am new to UNIX Signal processing if is it possible how to detect it? We generally do $kill PID For Graceful... (5 Replies)
Discussion started by: mnmonu
5 Replies

8. Shell Programming and Scripting

SIGSTOP and SIGKILL

Which is sent to a terminal when it closes? SIGKILL? Reason I ask is I have a script I want to run in the background, but want it to run even if the terminal window is closed. Or, I'd like it to background itself if the terminal is closed but not if its running in an open window. I will learn how... (5 Replies)
Discussion started by: DC Slick
5 Replies

9. UNIX for Advanced & Expert Users

Print message while using sqlplus

I want to connect to oracle database from solaris... After that i will drop and create a no.of tables.One of the table example is as below. sqlplus -s usrname/password@dbname << SQL >> $logfile 2>&1 echo " dropping the table1" | tee logfile DROP TABLE Table1 echo "creating the table1" |... (1 Reply)
Discussion started by: millan
1 Replies

10. Shell Programming and Scripting

Script to check the string in a file and print an attribute in the message

Hi, I am new to shell scripting and got a task to complete. Task is : we have a log file where in i need to traverse through the whole file to check the string "Person Type missing in message" and after that i need to get EMPLID=xxxxxx from the file and print details in a different file. ... (1 Reply)
Discussion started by: suren424
1 Replies
Net::Server::Fork(3)					User Contributed Perl Documentation				      Net::Server::Fork(3)

NAME
Net::Server::Fork - Net::Server personality SYNOPSIS
use Net::Server::Fork; @ISA = qw(Net::Server::Fork); sub process_request { #...code... } __PACKAGE__->run(); DESCRIPTION
Please read the pod on Net::Server first. This module is a personality, or extension, or sub class, of the Net::Server module. This personality binds to one or more ports and then waits for a client connection. When a connection is received, the server forks a child. The child handles the request and then closes. With the exception of parent/child signaling, this module will work (with basic functionality) on Win32 systems. ARGUMENTS
check_for_dead Number of seconds to wait before looking for dead children. This only takes place if the maximum number of child processes (max_servers) has been reached. Default is 60 seconds. max_servers The maximum number of children to fork. The server will not accept connections until there are free children. Default is 256 children. max_dequeue The maximum number of dequeue processes to start. If a value of zero or undef is given, no dequeue processes will be started. The number of running dequeue processes will be checked by the check_for_dead variable. check_for_dequeue Seconds to wait before forking off a dequeue process. It is intended to use the dequeue process to take care of items such as mail queues. If a value of undef is given, no dequeue processes will be started. CONFIGURATION FILE
See Net::Server. PROCESS FLOW
Process flow follows Net::Server until the post_accept phase. At this point a child is forked. The parent is immediately able to wait for another request. The child handles the request and then exits. HOOKS
The Fork server has the following hooks in addition to the hooks provided by the Net::Server base class. See Net::Server "$self->pre_accept_hook()" This hook occurs just before the accept is called. "$self->pre_fork_hook()" This hook occurs just after accept but before the fork. "$self->post_accept_hook()" This hook occurs in the child after the accept and fork. "$self->run_dequeue()" This hook only gets called in conjuction with the check_for_dequeue setting. TO DO
See Net::Server AUTHOR
Paul Seamons <paul@seamons.com> Rob Brown <bbb@cpan.org> SEE ALSO
Please see also Net::Server::INET, Net::Server::PreFork, Net::Server::MultiType, Net::Server::SIG Net::Server::Single perl v5.12.1 2007-02-03 Net::Server::Fork(3)
All times are GMT -4. The time now is 01:22 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy