Код выхода NodeJS сдвинут на 8 бит влево - PullRequest
0 голосов
/ 05 марта 2019

У меня есть две программы: программа «а» написана на C и программа «b» написана на NodeJS.Я выполняю программу 'b' из программы 'a' следующим образом:

int retVal = system("node /path/to/progB.js");
printf("%d",retVal);

И моя программа 'b' выглядит примерно так:

request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {

        if (body === 'something') {
            process.exitCode = 0;
        } else if (body === 'something else') {
            process.exitCode = 1;
        } else {
            process.exitCode = 2;
        }

    } else {
        console.log("ERR" + body + response);
        process.exitCode = 3;
    }
});

обратно в программу 'a' returnзначения могут быть 0, 256, 512 или 768.Который в двоичном виде: 0000 0000 0000, 0001 0000 0000, 0010 0000 0000, 0011 0000 0000.Изучив эти числа, я ясно вижу, что мои возвращаемые значения - это биты 8 и 9, поэтому мое возвращаемое значение сдвигается на 8 бит влево.Но почему?

Система Raspberry Pi с Raspbian и компилятор gcc версии 6.3.0

1 Ответ

0 голосов
/ 05 марта 2019

Вы должны использовать макросы WIFEXITED, WEXITSTATUS и друзей, чтобы интерпретировать результат system.Для получения дополнительной информации о макросах см. Справочную страницу wait (2).

...