[root@ test]$ cat return10.c #include <stdio.h> int main(int argc, char *argv[]){ return 10; } [root@ test]$ perl -e 'print system("/path_to_return10")' 2560
Я ожидал 10 , но получил 2560 , почему?
См. $? в perldoc perlvar .
$?
Вы получили 10 * 256 (возвращаемое значение = 10) + 0 * 128 (не было дампа памяти) + 0 (процесс не был прерван по сигналу).
как указано в документации для вызова system в perl (http://perldoc.perl.org/functions/system.html):
system
Возвращаемое значение - это состояние выхода из программы, возвращаемое ждать звонка. Чтобы получить фактическое значение выхода, сдвиньте вправо на восемь (см. ниже).
действительно: 2560 >> 8 = 10
2560 >> 8 = 10