c - NodeJS 退出代码左移 8 位

标签 c node.js return-value

我有两个程序,用 C 编写的程序“a”和用 NodeJS 编写的程序“b”。我从程序“a”执行程序“b”,如下所示:

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”,返回值为 0256512768。二进制为:0000 0000 00000001 0000 00000010 0000 00000011 0000 0000。通过检查这些数字,我可以清楚地看到我的返回值是第 8 位和第 9 位,因此我的返回值向左移动了 8 位。但为什么呢?

系统是带有 Raspbian 的 Raspberry Pi,编译器是 gcc 版本 6.3.0

最佳答案

您必须使用宏WIFEXITEDWEXITSTATUS等来解释system的结果。有关宏的更多详细信息,请参阅 wait(2) 的手册页。

关于c - NodeJS 退出代码左移 8 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54998270/

相关文章:

c - apr_dso_load 加载 DSO 失败

c - 如何动态分配函数代码?

arrays - 当我在 main 函数外初始化结构成员时,为什么这个 c 程序会出错?

javascript - 类型错误:require(...) 不是一个函数

javascript - 为什么我在快速打字时会出现错误的、双倍的输入值?

c - 使用共享内存将数据结构传递给另一个进程并保存到文件

javascript - 根据传递的变量动态添加子字段名称

node.js - Express.js 与 Node JS 有何关系?

matlab - 如何在不先将函数返回的 MATLAB 数组分配给局部变量的情况下对其进行索引?

带有 slice 参数的函数不会修改原始容量