0

Java コードとネイティブ コード間の通信に 2 つのファイル パイプを使用するネイティブ コードを Android アプリに書き込もうとしています。最終的な目的は、ネイティブ コードがネットワークを介して通信し、Java コードがパイプの両端で受信データと送信データの両方をリッスンすることです。これは私がJavaアプリから呼び出すコードです:

JNIEXPORT void JNICALL Java_com_test_fdtest_Bindings_openSession(JNIEnv *env, jobject this)
{
int inpipe[2];
int outpipe[2];
FILE *in;
FILE *out;
if(pipe (inpipe)) {
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Unable to set up input pipe");
    return;
}
if(pipe (outpipe)) {
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "Unable to set up output pipe");
    return;
}
in = fdopen(inpipe[0], "w");
out = fdopen(outpipe[1], "r");
if(in == NULL) {
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "input pipe null");

}
if(out == NULL) {
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "output pipe null");

}
}

これから私は出力を得る:

06-04 09:44:41.759: D/dalvikvm(1443): Trying to load lib /data/data/com.test.fdtest/lib/libfdtest.so 0x414955a8
06-04 09:44:41.789: D/dalvikvm(1443): Added shared lib /data/data/com.test.fdtest/lib/libfdtest.so 0x414955a8
06-04 09:44:41.789: D/NDK_BINDINGS(1443): input pipe null
06-04 09:44:41.799: D/NDK_BINDINGS(1443): output pipe null

これは奇妙に思えます。パイプは正常にセットアップされているようですが、ファイルを開くことができません。ドキュメントがこれが機能することを示唆しているように見えるので、これはこのコードで根本的に間違っているのでしょうか。

助けてくれてありがとう

4

1 に答える 1