Java代码:
public class Test {
public static void main ( String[] args ) {
System.exit ( 4 );
}
}
C++代码:
#include <stdio.h>
#include <cstdlib>
int main() {
int result = system ( "java Test" );
printf ( "Result: %d", result );
}
运行这个C++程序输出
"Result: 1024"
如果我直接运行java程序,用bash的$?变量,我得到 4:
> java Test
> echo $?
4
看来我误解或误用了系统调用。
如何从 system() 调用中获取返回值“4”而不是“1024”,以及“1024”从何而来?
谢谢!
最佳答案
您可以在 system
调用的结果上使用 WEXITSTATUS
来获取退出状态。
#include <stdio.h>
#include <cstdlib>
int main() {
int result = system ( "java Test" );
printf ( "Result: %d", WEXITSTATUS( result ) );
}
关于C++ system() 调用未正确记录 Java 返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358329/