Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Unis signal handling in parent child scenario.

Reply
Thread Tools

Unis signal handling in parent child scenario.

 
 
gnutuxy@yahoo.co.in
Guest
Posts: n/a
 
      09-30-2004
Hi,

I am newbie in the Unix system programming and in learning phase.
I usually read the libc manual and then try to implement small
programs to test/check the learnt thing.

I read the libc manual for signals and tried the program to check
whether child
inherits the signal handler intalled by parent befor fork.

I am totally confused about it because the code won't work as per the
the manual. Manual says child inherits signal action and signal mask.

My situation is as follows:
Question : Why I won't get message "Received the signal: #" on the
terminal, when I signaled child process with SIGINT?

==================glibc manual extract==============
* The set of pending signals (*note Delivery of Signal: for the
child process is cleared. (The child process inherits its mask of
blocked signals and signal actions from the parent process.)
================================================== ==

My try : I just want to check that the signal handler installed in
Parent is
inherited by child ( this is what I interpreted from the
glibc manual,
the extract of the manual is highlighted above. )

Here is my code.
=================my code============================
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>

void mysig_handler( int signum )
{
printf("Received the signal: %d", signum );
}

int main( int argc, char *argv[] )
{

pid_t chld;

signal( SIGINT, mysig_handler );

if( ( chld = fork() ) < 0 )
{
//error
printf("Fork Error!\n");
}
else if( chld == 0 )
{
//child
while(1)
{
}
}
else
{
//parent
while(1)
{
}
}
return(0);
}
================================================== ==
my softwares are
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
Kernel 2.2.14-12smp

Regards,
Vinay G.
 
Reply With Quote
 
 
 
 
Jonathan Adams
Guest
Posts: n/a
 
      09-30-2004
In article < >,
wrote:

> Hi,
>
> I am newbie in the Unix system programming and in learning phase.
> I usually read the libc manual and then try to implement small
> programs to test/check the learnt thing.
>
> I read the libc manual for signals and tried the program to check
> whether child
> inherits the signal handler intalled by parent befor fork.
>
> I am totally confused about it because the code won't work as per the
> the manual. Manual says child inherits signal action and signal mask.
>
> My situation is as follows:
> Question : Why I won't get message "Received the signal: #" on the
> terminal, when I signaled child process with SIGINT?


Well, comp.unix.programmer (cross-posted, followup-to: set) would
probably be a better newsgroup, but your error is simple, and somewhat
on-topic:

> void mysig_handler( int signum )
> {
> printf("Received the signal: %d", signum );
> }


stdout is by default line-buffered. You either need to end your printf
format with '\n':

printf("Received the signal: %d\n", signum );

Or add an fflush(stdout); after the printf:

printf("Received the signal: %d", signum );
fflush(stdout);

if you want to get any output. You probably want the former. Back to
c.l.c off-topic-ness:

signal(3C) is a very old, crufty interface. You should look at the
manpage for sigaction(3C), the preferred interface. You might consider
picking up one of:
_Advanced Programming in the Unix Environment_
(Stevens, ISBN 0201563177)
_Solaris Systems Programming_
(Rich Teer, ISBN 0201750392)

The latter, despite the title, contains general Unix programming tips,
and is kind of an up-to-date APUE in parts, from what I hear.

Cheers,
- jonathan
 
Reply With Quote
 
 
 
 
gnutuxy@yahoo.co.in
Guest
Posts: n/a
 
      10-04-2004
Thanks Jonathan,

It works!
And thanks for suggesting the com.unix.programming.

Regards,
Vinay Gadekar.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
If a class Child inherits from Parent, how to implementChild.some_method if Parent.some_method() returns Parent instance ? metal Python 8 10-30-2009 10:31 AM
je veu discuter sur tout et avec tout habitant d'europe,d'australieou des etats unis ALPHOULA@gmail.com Computer Support 1 04-12-2008 02:30 PM
Parent to child back to parent Adrian MacNair Javascript 2 05-26-2005 08:01 PM
Parent - Child back to parent javascript thingybob mark ASP .Net 1 03-10-2005 02:20 PM
Pass from parent to child, then update parent with child value... Noel Dolan Javascript 0 07-18-2004 05:52 PM



Advertisments