Sponsored Content
Top Forums Shell Programming and Scripting How to detect SIGTERM,SIGKILL signal in UNIX Post 302402055 by ldapswandog on Monday 8th of March 2010 07:22:44 PM
Old 03-08-2010
You can use 'trap' within the parent script to capture signals and perform commands before exiting.
Code:
$ trap -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGEMT       8) SIGFPE
 9) SIGKILL     10) SIGBUS      11) SIGSEGV     12) SIGSYS
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGURG
17) SIGSTOP     18) SIGTSTP     19) SIGCONT     20) SIGCHLD
21) SIGTTIN     22) SIGTTOU     23) SIGIO       24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGLOST     30) SIGUSR1     31) SIGUSR2     32) SIGRTMAX

An example:
Code:
stty echo # turn echo off prior to capturing a password
trap 'stty echo;exit' INT  # if the user does a ctrl+c to exit the password prompt the trap will turn the echo back ON.

[/code]
 

9 More Discussions You Might Find Interesting

1. 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

2. UNIX for Advanced & Expert Users

Help required regarding Unix Signal

It is required to trap the signal send to a daemon process before rebooting a unix server. Suppose a script abc.ksh is running in the server as daemon. Before rebooting the server, the unix admin kills all the daemon processes. It is not known to me how admin kills the processes; I mean by which... (9 Replies)
Discussion started by: k_bijitesh
9 Replies

3. Programming

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... (11 Replies)
Discussion started by: norelco55
11 Replies

4. 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

5. Programming

Reliable management of signal SIGPIPE and SIGTERM

I' m note very expert in the reliable manage of signal... but in my server I must manage SIGPIPE for the socket and SIGTERM... I've wrote this but there is something wrong... Can someone explain me with some example the reliable management of signal?? This is what I've wrote in the server ... (2 Replies)
Discussion started by: italian_boy
2 Replies

6. Solaris

Signal Processing in unix

I've read the man page of singal(3) but I still can't quite understand what is the difference between SIGINT, SIGALRM and SIGTERM. Can someone tell me what is the behavioral difference among these 3 signals in kill command? Thanks! (2 Replies)
Discussion started by: joe228
2 Replies

7. 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

8. Programming

UNIX signal problem

Hi all, Sorry about the title,at first i decided to ask a problem about the signal mechanism,however,i'm now figured it out.Sorry to forget modify the title:wall:.I had a small problem that if i use the code which is commented,the code would get a segment fault,while the above code NOT.what's... (4 Replies)
Discussion started by: homeboy
4 Replies

9. UNIX for Advanced & Expert Users

How to detect files transmission at UNIX server ?

Dear Expert Users, I know that Unix utility ( fuser ) is used to detect "transmission" of files from Source system to "current Linux Server". I have scheduled this Unix script to work every 30th minutes of the hour and whenever files transmission starts at that very moment. And, the file... (4 Replies)
Discussion started by: schandrakar1
4 Replies
sigvec(3UCB)					     SunOS/BSD Compatibility Library Functions					      sigvec(3UCB)

NAME
sigvec - software signal facilities SYNOPSIS
/usr/ucb/cc [ flag ... ] file... #include <signal.h> int sigvec(sig, nvec, ovec) int sig; struct sigvec *nvec, *ovec; DESCRIPTION
The system defines a set of signals that may be delivered to a process. Signal delivery resembles the occurrence of a hardware interrupt: the signal is blocked from further occurrence, the current process context is saved, and a new one is built. A process may specify a han- dler to which a signal is delivered, or specify that a signal is to be blocked or ignored. A process may also specify that a default action is to be taken by the system when a signal occurs. Normally, signal handlers execute on the current stack of the process. This may be changed, on a per-handler basis, so that signals are taken on a special signal stack. All signals have the same priority. Signal routines execute with the signal that caused their invocation to be blocked, but other signals may yet occur. A global signal mask defines the set of signals currently blocked from delivery to a process. The signal mask for a process is initialized from that of its parent (normally 0). It may be changed with a sigblock() or sigsetmask() call, or when a signal is deliv- ered to the process. A process may also specify a set of flags for a signal that affect the delivery of that signal. When a signal condition arises for a process, the signal is added to a set of signals pending for the process. If the signal is not cur- rently blocked by the process then it is delivered to the process. When a signal is delivered, the current state of the process is saved, a new signal mask is calculated (as described below), and the signal handler is invoked. The call to the handler is arranged so that if the signal handling routine returns normally the process will resume execution in the context from before the signal's delivery. If the process wishes to resume in a different context, then it must arrange to restore the previous context itself. When a signal is delivered to a process a new signal mask is installed for the duration of the process' signal handler (or until a sig- block() or sigsetmask() call is made). This mask is formed by taking the current signal mask, adding the signal to be delivered, and ORing in the signal mask associated with the handler to be invoked. The action to be taken when the signal is delivered is specified by a sigvec() structure, which includes the following members: void (*sv_handler)(); /* signal handler */ int sv_mask; /* signal mask to apply */ int sv_flags; /* see signal options */ #define SV_ONSTACK /* take signal on signal stack */ #define SV_INTERRUPT /* do not restart system on signal return */ #define SV_RESETHAND /* reset handler to SIG_DFL when signal taken*/ If the SV_ONSTACK bit is set in the flags for that signal, the system will deliver the signal to the process on the signal stack specified with sigstack(3UCB) rather than delivering the signal on the current stack. If nvec is not a NULL pointer, sigvec() assigns the handler specified by sv_handler(), the mask specified by sv_mask(), and the flags spec- ified by sv_flags() to the specified signal. If nvec is a NULL pointer, sigvec() does not change the handler, mask, or flags for the spec- ified signal. The mask specified in nvec is not allowed to block SIGKILL, SIGSTOP, or SIGCONT. The system enforces this restriction silently. If ovec is not a NULL pointer, the handler, mask, and flags in effect for the signal before the call to sigvec() are returned to the user. A call to sigvec() with nvec a NULL pointer and ovec not a NULL pointer can be used to determine the handling information currently in effect for a signal without changing that information. The following is a list of all signals with names as in the include file <signal.h>: SIGHUP hangup SIGINT interrupt SIGQUIT* quit SIGILL* illegal instruction SIGTRAP* trace trap SIGABRT* abort (generated by abort(3C) routine) SIGEMT* emulator trap SIGFPE* arithmetic exception SIGKILL kill (cannot be caught, blocked, or ignored) SIGBUS* bus error SIGSEGV* segmentation violation SIGSYS* bad argument to function SIGPIPE write on a pipe or other socket with no one to read it SIGALRM alarm clock SIGTERM software termination signal SIGURG* urgent condition present on socket SIGSTOP** stop (cannot be caught, blocked, or ignored) SIGTSTP** stop signal generated from keyboard SIGCONT* continue after stop (cannot be blocked) SIGCHLD* child status has changed SIGTTIN** background read attempted from control terminal SIGTTOU** background write attempted to control terminal SIGIO* I/O is possible on a descriptor (see fcntl(2)) SIGXCPU cpu time limit exceeded (see getrlimit(2)) SIGXFSZ file size limit exceeded (see getrlimit(2)) SIGVTALRM virtual time alarm; see setitimer() on getitimer(2) SIGPROF profiling timer alarm; see setitimer() on getitimer(2) SIGWINCH* window changed (see termio(7I)) SIGLOST resource lost (see lockd(1M)) SIGUSR1 user-defined signal 1 SIGUSR2 user-defined signal 2 The starred signals in the list above cause a core image if not caught or ignored. Once a signal handler is installed, it remains installed until another sigvec() call is made, or an execve(2) is performed, unless the SV_RESETHAND bit is set in the flags for that signal. In that case, the value of the handler for the caught signal will be set to SIG_DFL before entering the signal-catching function, unless the signal is SIGILL, SIGPWR, or SIGTRAP. Also, if this bit is set, the bit for that signal in the signal mask will not be set; unless the signal mask associated with that signal blocks that signal, further occurrences of that signal will not be blocked. The SV_RESETHAND flag is not available in 4.2BSD, hence it should not be used if backward compatibility is needed. The default action for a signal may be reinstated by setting the signal's handler to SIG_DFL; this default is termination except for sig- nals marked with * or **. Signals marked with * are discarded if the action is SIG_DFL; signals marked with ** cause the process to stop. If the process is terminated, a "core image" will be made in the current working directory of the receiving process if the signal is one for which an asterisk appears in the above list (see core(4)). If the handler for that signal is SIG_IGN, the signal is subsequently ignored, and pending instances of the signal are discarded. If a caught signal occurs during certain functions, the call is normally restarted. The call can be forced to terminate prematurely with an EINTR error return by setting the SV_INTERRUPT bit in the flags for that signal. The SV_INTERRUPT flag is not available in 4.2BSD, hence it should not be used if backward compatibility is needed. The affected functions are read(2) or write(2) on a slow device (such as a terminal or pipe or other socket, but not a file) and during a wait(3C). After a fork(2) or vfork(2) the child inherits all signals, the signal mask, the signal stack, and the restart/interrupt and reset-signal- handler flags. The execve(2) call resets all caught signals to default action and resets all signals to be caught on the user stack. Ignored signals remain ignored; the signal mask remains the same; signals that interrupt functions continue to do so. The accuracy of addr is machine dependent. For example, certain machines may supply an address that is on the same page as the address that caused the fault. If an appropriate addr cannot be computed it will be set to SIG_NOADDR. RETURN VALUES
A 0 value indicates that the call succeeded. A -1 return value indicates that an error occurred and errno is set to indicate the reason. ERRORS
sigvec() will fail and no new signal handler will be installed if one of the following occurs: EFAULT Either nvec or ovec is not a NULL pointer and points to memory that is not a valid part of the process address space. EINVAL sig is not a valid signal number, or, SIGKILL, or SIGSTOP. SEE ALSO
cc(1B), Intro(2), exec(2), fcntl(2), fork(2), getitimer(2), getrlimit(2), ioctl(2), kill(2), read(2), umask(2), vfork(2), write(2), ptrace(3C), setjmp(3C) sigblock(3UCB), signal(3C), signal(3UCB), sigstack(3UCB), wait(3C), wait(3UCB), core(4), streamio(7I), termio(7I) NOTES
Use of these interfaces should be restricted to only applications written on BSD platforms. Use of these interfaces with any of the system libraries or in multi-thread applications is unsupported. SIGPOLL is a synonym for SIGIO. A SIGIO will be issued when a file descriptor corresponding to a STREAMS (see Intro(2)) file has a "selectable" event pending. Unless that descriptor has been put into asynchronous mode (see fcntl(2)), a process may specifically request that this signal be sent using the I_SETSIG ioctl(2) call (see streamio(7I)). Otherwise, the process will never receive SIGPOLLs0. The handler routine can be declared: void handler(int sig, int code, struct sigcontext *scp, char *addr); Here sig is the signal number; code is a parameter of certain signals that provides additional detail; scp is a pointer to the sigcontext structure (defined in signal.h), used to restore the context from before the signal; and addr is additional address information. The signals SIGKILL, SIGSTOP, and SIGCONT cannot be ignored. SunOS 5.11 30 Oct 2007 sigvec(3UCB)
All times are GMT -4. The time now is 06:09 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy