|
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);
char stack_var[stack_size];
printf("About to use stack array. Enter to continue. ");
scanf("%c", &ch);
for(int i=0; i < stack_size; i++)
stack_var[i] = (char) i;
printf("About to malloc heap array. Enter to continue. ");
scanf("%c", &ch);
char * h = (char *) malloc(heap_size);
printf("About to use heap array. Enter to continue. ");
scanf("%c", &ch);
for(int i=0; i < heap_size; i++)
h[i] = (char) i;
printf("About to seg fault. Enter to continue. ");
scanf("%c", &ch);
int *p = 0;
*p = 1; // seg fault
return 0;
}
|