O_PATH эквивалент в ядре Linux до 2.6.39? - PullRequest
0 голосов
/ 20 октября 2019

В последнем ядре я использую следующий код для управления индексом файла символической ссылки:

file = filp_open(filename, O_PATH | O_NOFOLLOW, 0);

Если я не добавлю O_PATH, filp_open завершится с ошибкой -ELOOP.

В ядре Linux 2.6.32 O_PATH недоступен, что я должен использовать вместо этого?

1 Ответ

0 голосов
/ 21 октября 2019

Я не думаю, что есть прямой эквивалент, поскольку O_PATH имеет очень специфическую семантику, где сам файл НЕ открывается. Самое близкое, что я считаю, это на самом деле открыть файл безопасным способом, то есть используя O_RDONLY. Да, это не совсем то же самое, как семантически, так и физически. Когда фактически открывается файл, в ядре выполняется гораздо больше работы, которая не выполняется при использовании O_PATH. Кроме того, вам понадобятся разрешения на чтение файла, чтобы открыть его. Но в противном случае это должно позволить вам делать то, что вам нужно.

...