As stated in the original post $? works when using system("cmd...")
but when using system(1,"cmd...")
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...");
$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...")