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
signal(3tcl)															      signal(3tcl)

NAME
signal - dynamically loadable signal handling for Tcl/Tk SYNOPSIS
signal (add|delete|print|version) [options] COMMANDS
add signo proc [-async] Adds a signal handler for signal signo through proc proc. Signals can be provided by number, or the most common ones are provided by name (e.g., SIGHUP). The proc is any Tcl procedure, and it is evaluated when the signal comes in. It will be provided no arguments. Signal handlers have Posix semantics - they persist until reset. If -async is used, the signal handler is created using Tcl_AsyncCreate(). Checks for the signal are very frequent (each evaluation) using this technique, but one doesn't know quite where evaluation is or how to handle errors in this situation. The code will evaluate the pro- vided procedure in the current interpreter if available, and in the interpreter which added the signal handler otherwise. At least until a better scheme is suggested. The -async is especially useful to interrupt "runaway" procs, or to cause a quick exit; the default mechanism simply waits for another MainLoop cycle. signal delete signo Restores handling of signal signo to the default ( SIG_DFL ). signal print Prints the handling of all signals with handlers. Formatted as signal ----> procedure or as signal !---> procedure if the signal is handled asynchronously signal print signo Prints the procedure for handling signal signo. Prints the word UNHANDLED if no signal handler is active for that signal. signal version Returns the string representing the current version of the package AUTHOR
Michael Schwartz <mschwart@nyx.net>. Tilman Kranz <tilde@tk-sls.de> patched this for wider portability on Linux Tcl Signal Extension 1.4.0.1 Tcl signal(3tcl)