-2

android是一种linux,它必须支持posix。但是,当它似乎不支持系统调用时,open()。这是测试代码,我通过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

我认为问题不syscall open()在于您试图访问/data. 此文件夹仅适用于有根手机或模拟器。您是否尝试将文件放入/sdcard文件夹中?

于 2012-05-28T08:01:08.943 回答
1

我认为问题在于标志 - 你只使用O_WRONLY. 但是如果一个文件不存在,你也应该使用O_CREAT标志创建它。因此,如果文件不存在,您应该调用:

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