Wszystko jest plikiem

Wszystko jest plikiem to pomysł, że Unix i jego pochodne obsługują dane wejściowe/wyjściowe do i z zasobów , takich jak dokumenty, dyski twarde, modemy, klawiatury, drukarki, a nawet niektóre połączenia międzyprocesowe i sieciowe jako proste strumienie ujawnionych bajtów przez przestrzeń nazw systemu plików . Wyjątki obejmują pamięć współdzieloną , semafory, gniazda datagramowe , dowiązania symboliczne , katalogi (które są tylko do odczytu i nie są dostępne jako strumień bajtów), procesy i wątki .

Zaletą tego podejścia jest to, że ten sam zestaw narzędzi, narzędzi i interfejsów API może być używany w szerokim zakresie zasobów i wielu typach plików . Kiedy plik jest otwierany, tworzony jest deskryptor pliku , używając ścieżki do pliku jako systemu adresowania. Deskryptor pliku jest wtedy interfejsem we/wy strumienia bajtów, na którym wykonywane są operacje na plikach. Dodatkowo tworzone są również deskryptory plików dla obiektów, takich jak anonimowe potoki i gniazda sieciowe - dlatego dokładniejszy opis tej funkcji to Everything is a file deskryptor .

Ponadto istnieje szereg pseudo i wirtualnych systemów plików , które udostępniają informacje o procesach i inne informacje systemowe w hierarchicznej strukturze przypominającej pliki. Są one montowane w pojedynczej hierarchii plików .

Przykładem tego czysto wirtualnego systemu plików jest katalog /proc , który ujawnia wiele właściwości systemu jako pliki. Wszystkie te pliki, w szerszym znaczeniu tego słowa, mają standardowe atrybuty plików uniksowych, takie jak właściciel i uprawnienia dostępu , i mogą być przeszukiwane przez te same klasyczne narzędzia i filtry uniksowe . Jednak nie jest to powszechnie uważane za szybkie lub przenośne podejście. Niektóre systemy operacyjne nawet domyślnie nie montują /proc ze względów bezpieczeństwa lub szybkości. Jest jednak intensywnie używany zarówno przez powszechnie instalowany BusyBox w systemach wbudowanych , jak i przez procps, który jest używany w większości systemów Linux . W obu przypadkach jest używany w implementacjach POSIX związanych z procesami . Jest podobnie używany w Android w programie Toolbox systemu operacyjnego.

Zobacz też