Почему $ Perl? возвращение неправильного значения для кода выхода разветвленного процесса?

Считайте этот тривиальный пример ветвления () лугом, затем ожидая ребенка для смерти в Perl:

#!/usr/bin/perl

use strict;
use warnings;

if (fork() == 0) {
        exit(1);
}

waitpid(-1,0);

print $?;

При запущении скрипта на Солярисе 10 я получаю этот результат:

$ perl test.pl
256

Я подозреваю, что значения смещаются вверх потому что, когда я делаю exit(2) в ребенке вывод становится 512.

Я, может казаться, не нахожу, что это зарегистрировало в waitpid perl. Действительно ли это - ошибка в моей системе, или я делаю что-то не так?

6
задан brian d foy 26 May 2010 в 14:37
поделиться