in reply to What is a successful return status for perl wait() in Solaris?

According to the Camel Book, this function waits for a child process to terminate. $? contains the pid of the deceased process, or -1 if there are no child processes.

Revised: Please ignore.

  • Comment on Re: What is a successful return status for perl wait() in Solaris?

Replies are listed 'Best First'.
Re^2: What is a successful return status for perl wait() in Solaris?
by friedo (Prior) on Feb 01, 2008 at 14:32 UTC

    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.)
Re^2: What is a successful return status for perl wait() in Solaris?
by almut (Canon) on Feb 01, 2008 at 14:31 UTC

    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 $?.

Re^2: What is a successful return status for perl wait() in Solaris?
by kduong (Initiate) on Feb 01, 2008 at 14:30 UTC
    wait() return the pid, but $? returns the return status. For example: $a = wait(); $a is the pid and $? is the return status.