-2

android は Linux の一種であり、posix をサポートしている必要があります。テスト用のコードは次のとおりです。NDK 経由でコンパイルします。

#include <unistd.h>
#include <stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

void main(){
    int fd;
    char pathname[128] = "/data/pwrite.txt";
    fd = open(pathname, O_WRONLY);
    if(fd==-1){
        printf("open fail.\n");

    }
    perror("/data/pwrite.txt");
}

以下は、Android からのプロンプトです。

kaiwii@ubuntu:~$ adb shell /data/pwrite/test1
open fail.
/data/pwrite.txt: No such file or directory
4

2 に答える 2

1

問題はフラグにあると思います-使用するのは。だけO_WRONLYです。ただし、ファイルが存在しない場合は、O_CREATフラグを使用してファイルを作成する必要もあります。したがって、ファイルが存在しない場合は、次のように呼び出す必要があります。

fd = open(pathname, O_WRONLY | O_CREAT);
于 2012-05-28T08:21:56.320 に答える
1

問題は ではなく、syscall open()アクセスしようとしているという事実だと思います/data。このフォルダーは、ルート化されたモバイルまたはエミュレーターでのみアクセスできます。ファイルをフォルダに入れようとしました/sdcardか?

于 2012-05-28T08:01:08.943 に答える