Почему система не возвращает значение main? - PullRequest
2 голосов
/ 20 июля 2011
[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 , почему?

Ответы [ 2 ]

6 голосов
/ 20 июля 2011

См. $? в perldoc perlvar .

Вы получили 10 * 256 (возвращаемое значение = 10) + 0 * 128 (не было дампа памяти) + 0 (процесс не был прерван по сигналу).

6 голосов
/ 20 июля 2011

как указано в документации для вызова system в perl (http://perldoc.perl.org/functions/system.html):

Возвращаемое значение - это состояние выхода из программы, возвращаемое ждать звонка. Чтобы получить фактическое значение выхода, сдвиньте вправо на восемь (см. ниже).

действительно: 2560 >> 8 = 10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...