07-12-2006
Is there a reason you cannot call waitpid() -- or wait()?
Signals arrive asynchronously, so you parent process' code could be in any state when the signal arrives..... but if you do stuff, then call wait() you're at a known point.
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
HI,
I need to handle SIGUSR2 signal in my application to change the state of the application dynamically. I have implemented the signal handler. However the application is able to catch only one SIGUSR2 signal. The second SIGUSR2 signal causes the application to crash. This is happning only with... (3 Replies)
Discussion started by: diganta
3 Replies
2. UNIX for Advanced & Expert Users
Hi
can any please tell me
is it possible to catch the signal in a shell script like we do in C.
if yes please give me some idea or a link. (4 Replies)
Discussion started by: Raom
4 Replies
3. Shell Programming and Scripting
Guys,
I'm doing signal handling in Perl. I'm trying to catch ^C signal inside the script.
There two scripts : one shell script and one perl script.
The shell script calls the perl script.
For e.g. shell script a.sh and perl scipt sig.pl.
Shell script a.sh looks something like this :... (6 Replies)
Discussion started by: obelix
6 Replies
4. Programming
Hello all,
I am starting to learn signal handling in Linux and have been trying out some simple codes to deal with SIGALRM. The code shown below sets a timer to count down. When the timer is finished a SIGALRM is produced. The handler for the signal just increments a variable called count. This... (7 Replies)
Discussion started by: fox_hound_33
7 Replies
5. Programming
Hi,
I have a main loop which calls a sub loop, which finally returns to the main loop itself. The main loop runs when a flag is set. Now, I have a signal handler for SIGINT, which resets the flag and thus stops the main loop. Suppose I send SIGINT while the program is in subloop, I get an error... (1 Reply)
Discussion started by: Theju
1 Replies
6. Programming
Hi guys,
this is my first posting, so at first hi to everyone! ;)
I have a problem with ucontext_t in connection with signal handling. I want to simulate a preemptive scheduler. I am using the iTimer with ITIMER_PROF, to schedule the interrupts. You find the code below:
#include <stdio.h>... (18 Replies)
Discussion started by: XComp
18 Replies
7. Programming
I am trying to write a small program where I can send signals and then ask for an action to be triggered if that signal is received. For example, here is an example where I am trying to write a programme that will say you pressed ctrl*c when someone presses ctrl+c. My questions are what you would... (1 Reply)
Discussion started by: #moveon
1 Replies
8. Programming
i wrote handler for sigsegv such that i can allocate memory for a variable to which
sigsegv generated for illlegal acces of memory.
my code is
#include <signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *j;
void segv_handler(int dummy)
{
j=(char *)malloc(10);
... (4 Replies)
Discussion started by: pavan6754
4 Replies
9. UNIX and Linux Applications
Hello,
Can anybody tell me how can i handle segmentation fault signal, in C code? (2 Replies)
Discussion started by: mustus
2 Replies
10. Programming
hi friends i have a problem in signal handling ...
let me explain my problem clearly..
i have four process ..
main process forks two child process and each child process again forks another new process respectively...
the problem is whenever i kill the child process it is reforking and the... (2 Replies)
Discussion started by: senvenugopal
2 Replies
LEARN ABOUT NETBSD
pthread_atfork
PTHREAD_ATFORK(3) BSD Library Functions Manual PTHREAD_ATFORK(3)
NAME
pthread_atfork -- register handlers to be called when process forks
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <pthread.h>
int
pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));
DESCRIPTION
The pthread_atfork() function registers the provided handler functions to be called when the fork(2) function is called. Each of the three
handlers is called at a different place in the fork(2) sequence. The prepare handler is called in the parent process before the fork hap-
pens, the parent handler is called in the parent process after the fork has happened, and the child handler is called in the child process
after the fork has happened. The parent and child handlers are called in the order in which they were registered, while the prepare handlers
are called in reverse of the order in which they were registered.
Any of the handlers given may be NULL.
The intended use of pthread_atfork() is to provide a consistent state to a child process from a multithreaded parent process where locks may
be acquired and released asynchronously with respect to the fork(2) call. Each subsystem with locks that are used in a child process should
register handlers with pthread_atfork() that acquires those locks in the prepare handler and releases them in the parent handler.
RETURN VALUES
The pthread_atfork() function returns 0 on success and an error number on failure.
ERRORS
The following error code may be returned:
[ENOMEM] Insufficient memory exists to register the fork handlers.
SEE ALSO
fork(2)
STANDARDS
The pthread_atfork() function conforms to IEEE Std 1003.1c-1995 (``POSIX.1'').
HISTORY
The pthread_atfork() function first appeared in NetBSD 2.0.
CAVEATS
After calling fork(2) from a multithreaded process, it is only safe to call async-signal-safe functions until calling one of the exec(3)
functions. The pthread_*() functions are not async-signal-safe, so it is not safe to use such functions in the child handler.
BUGS
There is no way to unregister a handler registered with pthread_atfork().
BSD
February 12, 2003 BSD