You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Processes II<br />
}<br />
while (!alarmflag)<br />
pause(); /* wait for signal */<br />
printf("loop ends due to alarm signal\n");<br />
void alarmhandler()<br />
{<br />
printf("alarm clock signal was received\n");<br />
alarmflag = 1;<br />
}<br />
/* critical.c - protecting critical code */<br />
#include <br />
#include <br />
main()<br />
{<br />
int (*oldHandler)();<br />
}<br />
oldHandler = signal (SIGINT, SIG_IGN);<br />
printf ("protected from ^C now\n");<br />
sleep(3);<br />
signal (SIGINT, oldHandler); /* restore old handler */<br />
/* limit.c - death of children */<br />
#include <br />
#include <br />
int delay;<br />
void childhandler();<br />
main(int argc, char *argv[])<br />
{<br />
int pid;<br />
signal(SIGCHLD, childhandler);/* signal handler */<br />
pid = fork(); /* duplicate process */<br />
if (pid == 0){ /* child */<br />
execvp(argv[2],&argv[2]); /* execute command */<br />
fprintf(stderr, "limit - should never execute\n");<br />
}<br />
else{ /* parent */<br />
sscanf(argv[1], "%d", &delay);<br />
sleep (delay);<br />
printf ("child %d exceeded limit and is killed\n", pid);<br />
kill(pid, SIGINT); /* kill child */<br />
}<br />
}<br />
limit 5 ls -1<br />
limit 4 sleep 40<br />
/* pulse.c - suspending and resuming processes */<br />
#include <br />
#include <br />
main()<br />
{<br />
int pid1, pid2;<br />
if((pid1=fork())== 0){ /* first child */<br />
125