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.
Here is the full code example in case I'm just doing something stupid:
my $wait = 0;
my $pid = system(1,"cmd...");
do {
$wait = waitpid($pid,WNOHANG);
} while ($wait != -1);
$rc = $?;
print "Command completed with exit code $wait with return code $rc.\n"
+;
The output is "Command completed with exit code -1 with return code -1".
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.
Thanks again.