[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

Re: signals ??



man signal
man kill


Prateek Gera wrote:

> nitin mahajan <nitin.mahajan@xxxxxxx> on 18/05/2000 04:41:46 PM
>
> Please respond to linux-india-programmers@xxxxxxxxxxxxxxxxxxxxx
>
> To:   linux-india-programmers@xxxxxxxxxxxxxxxxxxxxx
> cc:    (bcc: Prateek Gera/TMs/TCSDELHI/TCS)
> Subject:  [LIP] signals ??
>
> Hello ,
>
> Well i seem to be having problem passing signals betwen processe's in Linux
> ,
> can some one tell me
> where am i bingling up .. i say had installed a signal handler for a signal
> (infact tried all listed in Steven's) in a child process and when i send
> this
> signal from the parent of this child it was getting lost (i mean handler
> wasn't being called )
> any comments ??
> then is static global variables the way to pass reliably the information
> b/w
> processe's ??
>
> i am attaching a sample code saying what i was observing .. simple while
> (1)
> loops in both parent and child with parent terminating when user presses
> control-C and child is supposed to when it gets the SIGUSR1 from parent .
>
> # include <sys/types.h>
> # include <sys/wait.h>
> # include <stdio.h>
> # include <unistd.h>
> # include <signal.h>
> static int int_occured =0 ;
> static int int_occured2 =0;
> void handler(int i);
> void usr1handler(int i);
>
> void handler(int i)
> {
>  printf("OK I AM INSIDE THE HANDLER NOW  /n");
>                     /* this wasn't printed so we cannot print from inside
> the handler?? */
>
>  sleep(2);
>  int_occured=1;
>  kill(0,SIGUSR1);
>
> }
>
> void usr1handler(int i)
> {
>      printf("USR1 HAS BEEN THERE INTO ACTION NOW"); // basically it's to be
> used
> to set int_ocured2 so that child also gets out of while loop //
>      int_occured2=1;
>         sleep(10);
>
> }
>
> main ()
>
> {
>      int chpid ;
>      setpgrp();
>      signal(SIGINT,handler);
>      signal(SIGUSR1,SIG_IGN);
>
>           while (!int_occured)
>      {
>           printf("not recvd. signal as of now !!, %d", getpid());
>      }
>      if ((chpid = fork()) ==0)
>      {
>           signal(SIGINT,SIG_DFL);
>           signal(SIGUSR1,usr1handler);
>           printf("ok this is the good ol's child and VALUE OF
> INT!,%d",int_occured);
>
>           while(!(int_occured2))
>           {
>                printf("nahi main nahin maanonga  :)),%d , %d",
> int_occured,getpid());
>
>           }
>           printf("I AM INSIDE THE CHILD NOW");
>      }
>      else signal(SIGUSR1,SIG_IGN);
>
>      printf("ok out of while loop ! "); // but never printed //
>      exit(0);
>
> }
>
> With much modesty please point to this fella where i am goin wrong :(
>
> Luv,
> Nitin
>
> ____________________________________________________________________
> Get free email and a permanent address at http://www.netaddress.com/?N=1
>
> -----------------------------------------------------------------------
> LIP is all for free speech.  But it was created for a purpose - to help
> people discuss technical programming related issues about Linux.  If
> your messages are counterproductive to this purpose, your privileges to
> submit messages can and will be revoked.
>
> -----------------------------------------------------------------------
> LIP is all for free speech.  But it was created for a purpose - to help
> people discuss technical programming related issues about Linux.  If
> your messages are counterproductive to this purpose, your privileges to
> submit messages can and will be revoked.

--
_END_
Robin S Chatterjee Yahoo pager ID -Robinchatterjee
mailto:robinsc@xxxxxxxxx
mailto:robins_chatterjee@xxxxxxxxxxxx
FAX 1-(815)550-6171
Robin's Poetry Pages
http://www.geocities.com/singerosongs
Robin's Perl Pages
http://www.geocities.com/robinchatterjee