C++ system() 调用未正确记录 Java 返回码

标签 java c++

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/

相关文章:

c++ - 如何识别可执行文件是由 C 还是 C++ 编译的?

c++ - Coroutines2 - 为什么 yield 在没有调用源时运行

java - Protocol Buffer 编译器maven插件

java - 当我在相机应用程序中旋转屏幕并且我的主要 Activity 失败时,Android 相机没有将照片返回到主要 Activity

javascript - Spring 框架——未找到 JavaScript 文件的映射

c++ - 从原始数据生成 BSP 树

c++ - priority_queue 中 ITERATOR 的问题

c++ - 在具有可变长度的构造上创建二维数组

java - 动态创建多个ImageView

java - 字典序最小排列,使得所有相邻字母都不同