Pipes and COPY-ON-WRITE
In this example, every forked process gets its own copy of the
countervariable i through copy-on-write.
committer: Markus Bröker <mbroeker@largo.homelinux.org>
/**
* urandom.c
* Copyright (C) 2008 Markus Broeker
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
int compare (unsigned char *a, unsigned char *b)
{
if (*a > *b)
return 1;
return -1;
}
int main (int argc, char **argv)
{
int i;
int elements;
int fd;
unsigned char numbers[256] = { 0 };
fd = open ("/dev/urandom", O_RDONLY);
if (fd == -1)
return EXIT_FAILURE;
elements = read (fd, numbers, 255);
numbers[elements] = 0;
close (fd);
qsort (numbers, elements, sizeof (unsigned char), (void *)&compare);
for (i = 0; i < elements; i++) {
printf ("Number: %d\n", numbers[i]);
}
return EXIT_SUCCESS;
}