Linux中的文件输入输出

时间:2018-09-20 05:10:50

标签: android c linux

我试图在恢复模式下以当前打开的状态在Android中打开一个块文件系统,打开该文件系统后,我想将光标位置移动到该块文件的开头。

int movecursor(const char* blockPartition)
{
    int fd_read = open(blockPartition, O_RDONLY);
    printf("fd_read=%d \n",fd_read); 

    // go to beginning
    int returncode1 = lseek(fd_read, 0, SEEK_SET);// Here it is returning -1
    printf("returncode1=%d and \n",returncode1);
}

在这里,我能够以当前安装的读取模式打开文件系统 但是当a试图将光标移动到该文件的开头时,它将返回-1(不允许进行操作)。

以上代码段作为android本机服务运行。

请帮助我将光标位置移动到文件系统的开头。

1 个答案:

答案 0 :(得分:0)

您可以使用访问系统调用来检查您是否具有访问权限,然后再打开块分区。

if (access(partition, F_OK | W_OK) != -1) {
        printf("%s partition is available.Continuing...\n", partition);
        /* Open the mtd device for reading and writing */
        int fd_path = open(partition, O_RDONLY);
        lseek(fd_path, 0, SEEK_SET);// or lseek64 based on your system architecture
        
}

通常,当传递给函数的文件描述符无效时遇到“错误的文件描述符”,可能有多种原因:

* fd已在某处关闭。 * fd的值错误,这与从开放系统调用中获得的值不一致。