#!/usr/local/bin/perl

# to make a disk go nuts

use strict;

my $dir = '/var'; # director to put a test file
my $ttr = 600; # time to run

my @children;
for(1..3){
	my $pid = fork();
	if($pid){
		# parent
		push @children, $pid;
	}elsif($pid == 0){
		# child
		eval {
			local $SIG{ALRM} = sub { die "finished.\n"; };
			alarm($ttr);
			while(1){
				open(ZERO, "/dev/zero") || die "cannot read from zero: $!\n";
				my $x;
				sysread(ZERO, $x, 10240000);
				close ZERO;
				open(FILE, ">${dir}/pegio.$$") || die "cannot write to $dir/pegio.$$: $!\n";
				print FILE $x;
				close FILE;
			}
			alarm(0);
		};
		unlink("$dir/pegio.$$") || warn "could not unlink $dir/pegio.$$\n";
		alarm(0);
		warn $@ if($@);
		exit;
	}else{
		die "couldnt fork: $!\n";
	}
}

foreach(@children){
	waitpid($_,0);
}
