Return to the Lab #4 Page


#include <signal.h>
#include <stddef.h>
#include <stdio.h>
#include <sys/wait.h>

void suspend_current_process();

main()
{
  int index; 
  struct sigaction action;
  sigset_t blockall;

  /*
   * Initialize handler for suspention of running process
   * SIGTSTP
   */

  /* Privacy Please: block all signals...don't want to be interrpted */
  sigfillset (&blockall);
  action.sa_mask = blockall;

  /* This function will handle a suspend (SIGTSTP) */
  action.sa_handler = suspend_current_process;

  /* No flags */
  action.sa_flags = 0;

  /* Install the handler */
  sigaction (SIGTSTP, &action, NULL);

  /* Now, let's start a loop, so we can test it out. */
  for (index=0; index<100; index++)
  {
    printf ("Sleeping %d\n", index);
    sleep(1); /*why does sleep return in less than 1S , if I hit CTRL-Z? */
  }
  
  
}

/*
 * This is the signal hander that we installed
 */
void suspend_current_process()
{
  printf ("No, I wont stop!\n");
}