As stated in the original post $? works when using system("cmd...") but when using system(1,"cmd...") with waitpid it always returns -1 whether the system command was successful or not. It seems that it's returning the return code of the waitpid command itself and not the process I was waiting on.
in reply to Re: Getting a return code from waitpid in Windows
in thread Getting a return code from waitpid in Windows
Here is the full code example in case I'm just doing something stupid:
The output is "Command completed with exit code -1 with return code -1".
my $wait = 0;
my $pid = system(1,"cmd...");
$wait = waitpid($pid,WNOHANG);
} while ($wait != -1);
$rc = $?;
print "Command completed with exit code $wait with return code $rc.\n"
If I use the same (purposely bad) command with system("cmd...") then $? returns a value of 256 which is what I would expect when it failed and what I would like to get out of the system(1,"cmd...") call.