The return value is the PID. $? is the exit status of the child process.
The reason why the OP is getting 256 is explained in perlvar (the entry for $?):
The status returned by the last pipe close, backtick (``) command, successful call to wait() or waitpid(), or from the system() operator. This is just the 16-bit status word returnedby the wait() system call (or else is made up to look like it).
Thus, the exit value of the subprocess is really ("$? >> 8"), and "$? & 127" gives which signal, if any, the process died from, and "$? & 128" reports whether there was a core dump.
(Mnemonic: similar to sh and ksh.)
| [reply] |
I think it's rather (citing "perldoc -f wait"):
...it waits for a child process to terminate and returns the pid of the
deceased process, or "-1" if there are no child processes. The status
is returned in $?.
See man 2 wait on how to interpret the return status. Also,
perldoc -f system has some sample code for properly handling $?.
| [reply] [d/l] [select] |
wait() return the pid, but $? returns the return status. For example:
$a = wait();
$a is the pid and $? is the return status. | [reply] |