#!/usr/bin/perl

use warnings;
use strict;
use Time::HiRes qw(usleep);
use POSIX ":sys_wait_h";

my $tgt_server = '172.16.99.114';

my $nkids = 0;
my $kid;

while (1) {
    my $hn = "nonexistent-" . int(rand(1000000)) . ".black.zone";
    print "$nkids Q $hn\n";
    my $pid = fork();

    if (!defined($pid)) {
	sleep(10);
	$pid = fork();
    }

    if ($pid == 0) {
	exec "dig \@$tgt_server $hn";
	exit;
    }
    $nkids++;

    if ($nkids == 10) {
	usleep(500 * 1000);
	do {
	    $kid = waitpid(-1, WNOHANG);
	} while $kid > 0;
	$nkids = 0;
    }
}
