Fix interactive runner
authorMarius Gavrilescu <marius@ieval.ro>
Fri, 31 Jan 2014 13:17:06 +0000 (15:17 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Fri, 31 Jan 2014 13:17:06 +0000 (15:17 +0200)
lib/Gruntmaster/Daemon/Runner/Interactive.pm

index 5edee04ea2055f533e92d53a3754bf4b98ffe6d5..9c4580fbf2e033f77eabf0f9ddecb789467d8c6a 100644 (file)
@@ -15,13 +15,14 @@ use Try::Tiny;
 sub run{
   my ($test, $meta) = @_;
   get_logger->trace("Running on test $test...");
 sub run{
   my ($test, $meta) = @_;
   get_logger->trace("Running on test $test...");
-  my $ret = fork // get_logger->logdie("Fork failed: $!");
 
   mkfifo 'fifo1', 0600 or die $! unless -e 'fifo1';
   mkfifo 'fifo2', 0600 or die $! unless -e 'fifo2';
 
   mkfifo 'fifo1', 0600 or die $! unless -e 'fifo1';
   mkfifo 'fifo2', 0600 or die $! unless -e 'fifo2';
+
+  my $ret = fork // get_logger->logdie("Fork failed: $!");
   if ($ret) {
        $meta->{files}{prog}{run}->($meta->{files}{prog}{name}, fds => [qw/0 fifo1 1 >fifo2/], map {defined $meta->{$_} ? ($_ => $meta->{$_}) : () } qw/timeout mlimit/);
   if ($ret) {
        $meta->{files}{prog}{run}->($meta->{files}{prog}{name}, fds => [qw/0 fifo1 1 >fifo2/], map {defined $meta->{$_} ? ($_ => $meta->{$_}) : () } qw/timeout mlimit/);
-       wait;
+       waitpid $ret, 0;
        die [WA, "Wrong Answer"] if $?;
   } else {
        try {
        die [WA, "Wrong Answer"] if $?;
   } else {
        try {
This page took 0.011365 seconds and 4 git commands to generate.