Доступ запрещен при записи файла в «DiagnosticReports» - PullRequest
1 голос
/ 03 марта 2020

Может кто-нибудь объяснить мне, почему я не могу открыть файл для записи (macOS) под /Library/Logs/DiagnosticReports (независимо от причины).

Я знаю, что этот каталог принадлежит root, но когда Я использую терминал с командой touch foo, файл создается без проблем (и я работаю как тот же не пользователь root).

И когда я пытаюсь При использовании системного вызова open в моей программе C я получаю ошибку 2 (которая запрещена).

Это код, вызывающий ошибку.

fd = open(path, O_RDWR);

Хотелось бы чтобы узнать, есть ли разница между тем, как я запускаю эту программу, и тем, как я использую терминал для записи в файл (опять же, тот же пользователь)

1 Ответ

2 голосов
/ 03 марта 2020

Система не разрешает вам открывать каталог, как если бы он был обычным файлом.

После сбоя open (и многих других системных или библиотечных подпрограмм) вы можете использовать perror (объявлено). в <stdio.h>) распечатать сообщение об ошибке (на основе информации, установленной в errno). В этом случае perror("open") печатает «open: Is a directory» (или что-то подобное).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...