handling signals without race conditions


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers handling signals without race conditions
# 1  
Old 01-25-2012
handling signals without race conditions

Greetings,

I am writing a small program in C on UNIX, in which I am using (POSIX reliable) signals.

1. Suppose I have a signal : SIGX, and the corresponding signal handler : sigx_handler.

It is possible to receive SIGX in my process, and, while executing sigx_handler, to receive
again SIGX and to run again sigx_handler ?

What happens then ? sigx_handler (1st run) is interrupted, then it runs sigx_handler (2nd run),
then it resumes sigx_handler (1st run) ?

Is it possible to block SIGX, while running sigx_handler, and avoiding race conditions (in the C
code) in sigx_handler ? (That is, to run sigx_handler without interrupting it.) How to code this ?
I guess this implies some atomic operations...

2. Suppose my program handles SIGX, SIGY, SIGZ, using sigx_handler, sigy_handler, sigz_handler.
How to block, without race conditions, SIGY and SIGZ signals, when I enter SIGX handler (that is,
when I run sigx_handler) ?

Thank you.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Handling Signals in System Calls

What will happen if signal comes while a system call is being executed? How it will be handled? (1 Reply)
Discussion started by: rupeshkp728
1 Replies

2. Solaris

How to create core through program at the time of crash by handling signals?

I am in process of writing a library which can make any application of my product capable of creating core in the application's log folder with a product friendly core file name programatically. In my library I am registering for certain signals e.g. SIGILL, SIGFPE, SIGBUS, SIGSEGV, SIGSYS, SIGABRT... (5 Replies)
Discussion started by: rajeev_ks
5 Replies

3. AIX

How to create core through program at the time of crash by handling signals?

I am in process of writing a library which can make any application of my product capable of creating core in the application's log folder with a product friendly core file name programatically. In my library I am registering for certain signals e.g. SIGILL, SIGFPE, SIGBUS, SIGSEGV, SIGSYS, SIGABRT... (1 Reply)
Discussion started by: rajeev_ks
1 Replies

4. Shell Programming and Scripting

Errors in if conditions with to many OR conditions

Hi ALL I have a script where in i need to check for several values in if conditons but when i execute the script it throws error such as "TOO MANY ARGUMENTS" if then msg="BM VAR Issue :: bmaRequestVAR=$bmaRequestVAR , nltBMVAR=$nltBMVAR , bmaResponseVAR=$bmaResponseVAR ,... (10 Replies)
Discussion started by: nikhil jain
10 Replies

5. Programming

handling-create new SIGNALS

Hi, i cannot find in which file and function the signals are handled by default.Can anyone help me? How can i create a 33th signal? Thanks (3 Replies)
Discussion started by: Panos
3 Replies
Login or Register to Ask a Question
sigset(3C)																sigset(3C)

NAME
sigset(), sighold(), sigrelse(), sigignore() - signal management SYNOPSIS
DESCRIPTION
The system defines a set of signals that can be delivered to a process. The set of signals is defined in signal(5), along with the meaning and side effects of each signal. An alternate mechanism for handling these signals is defined here. The facilities described here should not be used in conjunction with the other facilities described under signal(2) and sigspace(2). allows the calling process to choose one of four ways to handle the receipt of a specific signal. sig specifies the signal and func speci- fies the action handler. sig can be any one of the signals described under signal(5) except or func is assigned one of four values: or a function address. The actions prescribed by and are described under signal(5). The action pre- scribed by and function address are described below: Hold signal. The signal sig is held upon receipt. Any pending signal of this signal type remains held. Only one signal of each type is held. Note: the signals and cannot be held. function address Catch signal. func must be a pointer to a function, the signal-catching handler, that is called when signal sig occurs. specifies that the process calls this function upon receipt of signal sig. Any pending signal of this type is released. This handler address is retained across calls to the other signal management functions listed here. Upon receipt of signal sig, the receiving process executes the signal-catching function pointed to by func as described under signal(5) with the follow- ing differences: Before calling the signal-catching handler, the defined action of sig is set to During a normal return from the signal- catching handler, the defined action is restored to func and any held signal of this type is released. If a non-local goto (longjmp(3C)) is taken, must be called to restore the defined action to func and release any held signal of this type. holds the signal sig. restores the defined action of sig to that specified previously by and are used to establish critical regions of code. is analogous to raising the priority level and deferring or holding a signal until the priority is lowered by sets the action for signal sig to (see signal(5)). RETURN VALUE
Upon successful completion, returns the previous value of the defined action for the specified signal sig. Otherwise, a value of is returned and is set to indicate the error. is defined in For the other functions, a 0 value indicates that the call succeeded. A -1 return value indicates an error occurred and is set to indicate the reason. ERRORS
fails and the defined action for sig is not changed if any of the following occur: The func argument points to memory that is not a valid part of the process address space. Reliable detection of this error is implementation dependent. and and fail and the defined action for sig is not changed if any of the following occur: sig is not a valid signal number. An attempt is made to ignore, hold, or supply a handler for a signal that cannot be ignored, held, or caught; see signal(5). WARNINGS
These signal facilities should not be used in conjunction with signal(2) and sigspace(2). SEE ALSO
kill(1), kill(2), pause(2), signal(2), sigspace(2), wait(2), abort(3C), setjmp(3C), sigpause(3C), signal(5). STANDARDS CONFORMANCE
sigset(3C)