30 Input/output library [input.output]

30.10 File systems [filesystems]

30.10.2 Conformance [fs.conformance]

Соответствие определяется поведением. Идеальное поведение не всегда реализуемо, поэтому в подразделах о соответствии это учтено.

30.10.2.1 POSIX conformance [fs.conform.9945]

Некоторое поведение определяется ссылкой на POSIX ([fs.norm.ref]). Как на самом деле реализуется такое поведение, не уточняется. [ Note: Это составляет правило «как если бы», позволяющее реализациям вызывать собственную операционную систему или другие API. ] end note

Реализациям рекомендуется обеспечивать такое поведение, как оно определено в POSIX. Реализации должны документировать любое поведение, которое отличается от поведения, определенного POSIX. Реализациям, которые не поддерживают точное поведение POSIX, рекомендуется обеспечивать поведение, максимально приближенное к поведению POSIX, насколько это разумно с учетом ограничений реальных операционных систем и файловых систем. Если реализация не может обеспечить какое-либо разумное поведение, реализация должна сообщить об ошибке, как указано в [fs.err.report]. [ Note: Это позволяет пользователям полагаться на возникшее исключение или установленный код ошибки, когда реализация не может обеспечить какое-либо разумное поведение. ]end note

Реализации не обязаны обеспечивать поведение, которое не поддерживается конкретной файловой системой. [ Example: Файловая система FAT, используемая некоторыми картами памяти, памятью камеры и гибкими дисками, не поддерживает жесткие ссылки, символические ссылки и многие другие функции более функциональных файловых систем, поэтому не требуются реализации для поддержки этих функций в файловой системе FAT, но вместо этого требуется сообщить об ошибке, как описано выше. ]end example

30.10.2.2 Operating system dependent behavior conformance [fs.conform.os]

Некоторое поведение указывается как имеющееся operating system dependent. Операционная система, от которой зависит реализация, определяется реализацией.

Допускается, чтобы реализация зависела от эмулятора операционной системы, а не от фактической базовой операционной системы.

30.10.2.3 File system race behavior [fs.race.behavior]

Поведение не определено, если вызовы функций, предоставленные этим подпунктом, вводят file system race.

Если возможность гонки файловой системы сделает для программы ненадежной проверку предусловия перед вызовом функции, описанной здесь, Requires: для функции не указано. [ Note: В соответствии с практикой проектирования предварительные условия не указываются, когда программа не имеет смысла обнаруживать их до вызова функции. ]end note