Закрытие указателя FILE C ++, который использует дескриптор файла из Java - PullRequest
0 голосов
/ 26 августа 2018

При использовании файлового дескриптора в нативном коде, который был получен из ParcelFileDescriptor , должна ли нативная сторона использовать fclose после fdopen ?

В документации указано , что экземпляру ParcelaleFileDescriptor принадлежит дескриптор файла, и он должен быть закрыт через него. Я не знаю влияния закрытия родного указателя FILE перед закрытием дескриптора файла.

псевдокод:

1) JAVA:
    // Obtain the file descriptor and pass it to the native method
    ParcelFileDescriptor descriptor  = contentResolver.openFileDescriptor(uri, "w");
    nativeMethod(descriptor.getFD());

2) C++:
    void nativeMethod(const int fd)
    {
        FILE* fp = fdopen(fd, "wb");    

        ..... // do something

        fclose(fp); // Close the file pointer <-- Is this valid?
    }

3) JAVA:
    // Back from the native method, close the file descriptor
    descriptor.close();
...