/*
 * CSSE 332: Operating Systems.
 *
 * This file allocates space for a signle integer and
 * then changes its value.
 *
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int
main(int argc, char *argv[])
{
	int *iptr;
	int i;

	/* let's allocate and print an integer */
	iptr = malloc(sizeof(int));
	if (!iptr) {
		perror("Ooops, out of memory...\n");
		exit(EXIT_FAILURE);
	}
	*iptr = 0;

	printf("(%u): Allocated int at location %p\n", getpid(), iptr);

	i = 0;
	while(i < 10) {
		*iptr = i++;
		printf("(%u): Updated the pointer's value to %d\n", getpid(),
		       *iptr);
		sleep(1);
	}

	/* done */
	free(iptr);
}