gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:52 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com