This commit is contained in:
2025-10-25 03:02:53 +03:00
commit 043225d523
3416 changed files with 681196 additions and 0 deletions

97
cppdraft/fs/general.md Normal file
View File

@@ -0,0 +1,97 @@
[fs.general]
# 31 Input/output library [[input.output]](./#input.output)
## 31.12 File systems [[filesystems]](filesystems#fs.general)
### 31.12.1 General [fs.general]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13115)
Subclause [[filesystems]](filesystems "31.12File systems") describes operations on file systems and their components, such as paths,
regular files, and directories[.](#1.sentence-1)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13119)
A [*file system*](#def:file_system "31.12.1General[fs.general]") is
a collection of files and their attributes[.](#2.sentence-1)
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13123)
A [*file*](#def:file "31.12.1General[fs.general]") is
an object within a file system that holds user or system data[.](#3.sentence-1)
Files can be written to, or read from, or both[.](#3.sentence-2)
A file
has certain attributes, including type[.](#3.sentence-3)
File types include regular files
and directories[.](#3.sentence-4)
Other types of files, such as symbolic links,
may be supported by the implementation[.](#3.sentence-5)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13130)
A [*directory*](#def:directory "31.12.1General[fs.general]") is
a file within a file system that acts as a container of directory entries
that contain information about
other files, possibly including other directory files[.](#4.sentence-1)
The [*parent directory*](#def:parent_directory "31.12.1General[fs.general]") of a directory is
the directory that both contains a
directory entry for the given directory and is represented by the dot-dot
filename ([[fs.path.generic]](fs.path.generic "31.12.6.2Generic pathname format")) in the given directory[.](#4.sentence-2)
The [*parent directory*](#def:parent_directory "31.12.1General[fs.general]") of other types of files is a directory containing a directory
entry for the file under discussion[.](#4.sentence-3)
[5](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13143)
A [*link*](#def:link "31.12.1General[fs.general]") is
an object that associates a filename with a file[.](#5.sentence-1)
Several links can associate names with the same file[.](#5.sentence-2)
A [*hard link*](#def:hard_link "31.12.1General[fs.general]") is
a link to an existing file[.](#5.sentence-3)
Some
file systems support multiple hard links to a file[.](#5.sentence-4)
If the last hard link to a
file is removed, the file itself is removed[.](#5.sentence-5)
[*Note [1](#note-1)*:
A hard link can be thought of as a shared-ownership smart
pointer to a file[.](#5.sentence-6)
— *end note*]
A [*symbolic link*](#def:symbolic_link "31.12.1General[fs.general]") is
a type of file with the
property that when the file is encountered during pathname resolution ([[fs.class.path]](fs.class.path "31.12.6Class path")), a string
stored by the file is used to modify the pathname resolution[.](#5.sentence-7)
[*Note [2](#note-2)*:
Symbolic links are often called symlinks[.](#5.sentence-8)
A symbolic link can be thought of as a raw pointer to a file[.](#5.sentence-9)
If the file pointed to does not exist, the symbolic link is said to be a
“dangling” symbolic link[.](#5.sentence-10)
— *end note*]