Next Unix Command Internals 8

World's Smallest Shell

        $| = 1;
        while (1) {
          print "perl% ";
          my $command = <STDIN>;
          last if $command eq '';
          chomp $command;
          my ($program, @args) = split /\s+/, $command;
          my $pid = fork;
          if (! defined $pid) { print STDERR "Couldn't fork: $!\n" }
          elsif ($pid != 0) { wait }         # The parent
          else { exec $program, @args;       # The child
                 die "Couldn't exec: $!\n";
               }
        }


Next Copyright © 2003 M. J. Dominus