Java Android:从JNI调用调用shell命令

Java Android:从JNI调用调用shell命令,java,android,c,java-native-interface,android-ndk,Java,Android,C,Java Native Interface,Android Ndk,我有以下问题: 我想从Java源代码调用一个Android原生二进制代码(在我的例子中是PING)。 所以我知道,通过创建一个新进程并监听其输出流,这是可能的——但我想知道是否不可能使用JNI来实现这一点 我考虑创建一个名为JNIPING的新二进制文件,它提供了一个可以从java调用的方法。此方法可以执行PING二进制文件并将其输出返回给JNI调用方 所以对我来说这听起来很有可能——但我在C语言方面真的很差,所以我想问你是否有人能告诉我如何做到这一点——或者如果这不可能,那么我不需要花很多时间在

我有以下问题:

我想从Java源代码调用一个Android原生二进制代码(在我的例子中是PING)。 所以我知道,通过创建一个新进程并监听其输出流,这是可能的——但我想知道是否不可能使用JNI来实现这一点

我考虑创建一个名为JNIPING的新二进制文件,它提供了一个可以从java调用的方法。此方法可以执行PING二进制文件并将其输出返回给JNI调用方

所以对我来说这听起来很有可能——但我在C语言方面真的很差,所以我想问你是否有人能告诉我如何做到这一点——或者如果这不可能,那么我不需要花很多时间在这方面

非常感谢您的回复

PS:我在我的JNIPING中尝试过类似的东西:

#include<stdio.h>
#include<stdlib.h>
int main() {
    char str[256], buf[256];
    printf("myshell-> ");
    scanf("%s", str);
    sprintf(buf, "ping www.google.de\n", str);
    system(buf);
    return 0;
}
#包括
#包括
int main(){
char-str[256],buf[256];
printf(“myshell->”);
scanf(“%s”,str);
sprintf(buf,“ping www.google.de\n”,str);
系统(buf);
返回0;
}
那么,如何从二进制文件中获取输出以将其发送回java?

您可以使用and类来完成此操作,请参见此

另一种可能是使用InetAddress.isRecable,请参见

然而,在Android下的ping案例中,这两种方法似乎都失败了