logoISU  

CS469/569 - Linux and Unix Administration and Networking

Spring 2022

Displaying ./code/02-24/mem.c~

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

int sig_count = 0;

void sig_handler(int signum) {
  sig_count++;
  printf("Signal recieved, %d times.\n", sig_count);
  if (sig_count > 1) exit(0);
}

int main(int argc, char *argv[]) {
  if (argc < 3) {
    printf("Usage: ./mem.o stack_size heap_size\n"
	   "  size's expressed in KB\n");
    exit(0);
  }
  int stack_size = atoi(argv[1])*1000,
    heap_size = atoi(argv[2])*1000;
  char ch;

  signal(SIGINT, sig_handler);

  printf("About to declare stack array.  Enter to continue. ");
  scanf("%c", &ch);

  printf("About to use stack array.  Enter to continue. ");
  scanf("%c", &ch);

  printf("About to malloc heap array.  Enter to continue. ");
  scanf("%c", &ch);

  printf("About to use heap array.  Enter to continue. ");
  scanf("%c", &ch);

  printf("About to seg fault.  Enter to continue. ");
  scanf("%c", &ch);
  int *p = 0;
  *p = 1; // seg fault
  
  return 0;
}