Wszystkie cztery /dev/fd/0
, /dev/stdin
, /proc/self/fd/0
a /dev/pts/2
nazwy plików, jak są /////dev/../dev/fd//0
, /bin/sh
, /etc/fstab
, /fioejfoeijf
, itd. Wszystkie jednak, że ostatni przykład mogą być nazwą istniejącego pliku na komputerze. Nazwa pliku to ciąg znaków, który może oznaczać plik w systemie plików; pod Linuksem każdy ciąg znaków, który nie zawiera bajtu zerowego i ma maksymalnie 4096 bajtów, jest prawidłową nazwą pliku. Wiele z tych nazw jest równoważnych, np. /bin/sh
Jest równoważne z (zakładając ///bin/sh
, /bin/../bin/sh
że /bin
jest to istniejący katalog) itp. Wszystkie przykłady, które do tej pory podałem, to bezwzględne nazwy plików; istnieją także względne nazwy plików, które nie zaczynają się od a, /
a ich znaczenie zależy od bieżącego katalogu.
Terminologia dotycząca nazw plików nie jest uniwersalna; czasami „nazwa pliku” oznacza pełną ścieżkę do pliku, a czasami oznacza nazwę pozycji katalogu. Terminologia POSIX to „ nazwa pliku ” lub „ składnik nazwy ścieżki ” dla nazwy pozycji katalogu i „ nazwa ścieżki ” dla pełnej ścieżki.
Deskryptor pliku oznacza otwarty plik w określonym procesie. Jądro utrzymuje tabelę deskryptorów plików dla każdego procesu. Każdy wpis w tabeli deskryptorów plików wskazuje, co zrobić, jeśli proces zażąda odczytu, zapisu i innych operacji na deskryptorze pliku.
Deskryptory plików mogą odpowiadać plikowi i mieć powiązaną nazwę, ale nie wszystkie. Dla tych, którzy to robią, plik może być zwykłym plikiem, katalogiem, plikiem urządzenia lub nazwanym potokiem (zwanym także FIFO) (rodzaj utworzony przez mkfifo
); niektóre systemy mają dalsze możliwości, takie jak gniazda i drzwi unix. Przykłady deskryptorów plików, które nie mają skojarzonych nazwanych plików, to potoki (takie, które zostały utworzone przez pipe
) i gniazda sieciowe .
/dev/fd/0
, /dev/stdin
A /proc/self/fd/0
nazwy plików (wszystkie równorzędne) o znaczeniu osobliwego: wszyscy desygnowany dowolny plik jest obecnie dostępna za pośrednictwem pliku deskryptora 0. Kiedy proces otwiera je kopiuje jądra wpis z indeksem 0 w tabeli deskryptorów deskryptora pliku do nowego deskryptor. Otwarcie dowolnego z tych plików jest równoznaczne z wywołaniem dup(0)
. Nazwane pliki są sposobem na pośrednie uzyskanie procesu korzystania z jednego z już otwartych plików zamiast otwierania nowego pliku; najczęściej przydają się w wierszu poleceń programu, w którym program oczekuje, że nazwa pliku się otworzy.