我有两个程序,用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'中的 back返回值为0
,256
,512
或768
。二进制形式是:0000 0000 0000
,0001 0000 0000
,0010 0000 0000
,0011 0000 0000
。通过检查这些数字,我可以清楚地看到我的返回值是位8和9,因此我的返回值向左移动了8位。但是为什么呢?
系统是具有Raspbian的Raspberry Pi,编译器是gcc版本6.3.0
答案 0 :(得分:1)
您必须使用宏WIFEXITED
,WEXITSTATUS
和朋友来解释system
的结果。有关宏的更多详细信息,请参见wait(2)的手册页。