11-09-2007
There are basically two types of signals...
1. synchronous signals, eg SIGSEGV, SIGILL etc
2. asynchronous signals, eg SIGCHLD, SIGQUIT, SIGINT etc
The first type mean something has gone wrong with execution and either you die or have to take some immediate remedy.
The second type are just notifying you that an external event has occured.
I normally structure my async handlers such that the main program is reading input using select or poll and has a pipe dedicated to asynchronous events which I read from.
When a signal occurs I simply write the number of the signal to the write end of the pipe, then let the main loop pickup the notification by reading the pipe and doing the appropriate response during normal processing.
10 More Discussions You Might Find Interesting
1. Programming
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
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
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
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
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
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
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
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
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
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
SIGNAL(2) System Calls Manual SIGNAL(2)
NAME
signal - catch or ignore signals
SYNOPSIS
#include <signal.h>
(*signal(sig, func))()
(*func)();
DESCRIPTION
A signal is generated by some abnormal event, initiated either by user at a typewriter (quit, interrupt), by a program error (bus error,
etc.), or by request of another program (kill). Normally all signals cause termination of the receiving process, but a signal call allows
them either to be ignored or to cause an interrupt to a specified location. Here is the list of signals with names as in the include file.
SIGHUP 1 hangup
SIGINT 2 interrupt
SIGQUIT 3* quit
SIGILL 4* illegal instruction (not reset when caught)
SIGTRAP 5* trace trap (not reset when caught)
SIGIOT 6* IOT instruction
SIGEMT 7* EMT instruction
SIGFPE 8* floating point exception
SIGKILL 9 kill (cannot be caught or ignored)
SIGBUS 10* bus error
SIGSEGV 11* segmentation violation
SIGSYS 12* bad argument to system call
SIGPIPE 13 write on a pipe or link with no one to read it
SIGALRM 14 alarm clock
SIGTERM 15 software termination signal
16 unassigned
The starred signals in the list above cause a core image if not caught or ignored.
If func is SIG_DFL, the default action for signal sig is reinstated; this default is termination, sometimes with a core image. If func is
SIG_IGN the signal is ignored. Otherwise when the signal occurs func will be called with the signal number as argument. A return from the
function will continue the process at the point it was interrupted. Except as indicated, a signal is reset to SIG_DFL after being caught.
Thus if it is desired to catch every such signal, the catching routine must issue another signal call.
When a caught signal occurs during certain system calls, the call terminates prematurely. In particular this can occur during a read or
write(2) on a slow device (like a typewriter; but not a file); and during pause or wait(2). When such a signal occurs, the saved user sta-
tus is arranged in such a way that when return from the signal-catching takes place, it will appear that the system call returned an error
status. The user's program may then, if it wishes, re-execute the call.
The value of signal is the previous (or initial) value of func for the particular signal.
After a fork(2) the child inherits all signals. Exec(2) resets all caught signals to default action.
SEE ALSO
kill(1), kill(2), ptrace(2), setjmp(3)
DIAGNOSTICS
The value (int)-1 is returned if the given signal is out of range.
BUGS
If a repeated signal arrives before the last one can be reset, there is no chance to catch it.
The type specification of the routine and its func argument are problematical.
ASSEMBLER
(signal = 48.)
sys signal; sig; label
(old label in r0)
If label is 0, default action is reinstated. If label is odd, the signal is ignored. Any other even label specifies an address in the
process where an interrupt is simulated. An RTI or RTT instruction will return from the interrupt.
SIGNAL(2)