Можем ли мы проверить разрешение на чтение файла перед открытием в ядре - PullRequest
0 голосов
/ 09 марта 2019

Я хочу открыть файл в режиме только для чтения в ядре, но прежде чем я сделаю это, я хочу проверить, есть ли у файла разрешение на чтение, как я могу это проверить?Потому что даже для проверки того, что мне нужен указатель файла, указывающий на входной файл.

filp_open(args->inputfile, O_RDONLY, 0);

Есть ли способ проверить его перед открытием?Я пытался использовать, но это всегда не удается

if (!fileptr->f_op->read)
{
     error = -EACCES;
     printk("reading input file failed\n");
}

1 Ответ

1 голос
/ 09 марта 2019

Вы должны использовать access(char *filepath,int mode), который проверяет права доступа к файлу.

mode описывает, что вы хотите проверить: F_OK (существование) или комбинацию OR R_OK (чтение), W_OK (запись)или X_OK (выполнить).

Итак, для вашей проблемы вы можете использовать:

#include <unistd.h>
...

if( access( filename, R_OK ) != -1 ) {
    // can read file
} else {
    // cannot read file
}
...