Nazwana rura - Named pipe

W obliczeniowej , A nazwie rury (znany również jako FIFO na jej zachowanie) jest rozszerzeniem tradycyjnych rur koncepcji na Unix i UNIXopodobnym systemów i jest jednym ze sposobów komunikacji między procesu (IPC). Koncepcję tę można również znaleźć w systemach OS/2 i Microsoft Windows , chociaż semantyka znacznie się różni. Tradycyjna fajka jest „ bez nazwy" i trwa tylko tak długo, jak proces. Jednak nazwany potok może działać tak długo, jak system działa, poza okresem życia procesu. Można go usunąć, jeśli nie jest już używany. Zwykle nazwany potok pojawia się jako plik , i zazwyczaj dołączają do niego procesy IPC.

W Uniksie

Zamiast konwencjonalnego, nienazwanego potoku powłoki, nazwany potok wykorzystuje system plików . Jest on jawnie tworzony za pomocą mkfifo()lub mknod(), a dwa oddzielne procesy mogą uzyskiwać dostęp do potoku według nazwy — jeden proces może go otworzyć jako czytnik, a drugi jako pisarz.

Na przykład, można utworzyć potok i ustawić gzip, aby kompresował rzeczy do niego przesyłane potokiem:

mkfifo my_pipe
gzip -9 -c < my_pipe > out.gz &

W osobnej powłoce procesu, niezależnie, można było przesłać dane do kompresji:

cat file > my_pipe

Nazwany potok można usunąć tak jak każdy plik:

rm my_pipe

Nazwany potok może służyć do przesyłania informacji z jednej aplikacji do drugiej bez użycia pośredniego pliku tymczasowego. Na przykład, możesz przekazać wyjście gzip do nazwanego potoku, tak jak poniżej:

mkfifo -m 0666 /tmp/namedPipe
gzip -d < file.gz > /tmp/namedPipe

Następnie załaduj nieskompresowane dane do tabeli MySQL w następujący sposób:

LOAD DATA INFILE '/tmp/namedPipe' INTO TABLE tableName;

Bez tego nazwanego potoku należałoby napisać całą nieskompresowaną wersję pliku.gz przed załadowaniem go do MySQL. Zapisanie pliku tymczasowego jest zarówno czasochłonne, jak i skutkuje większą liczbą operacji we/wy i mniejszą ilością wolnego miejsca na dysku twardym.

Narzędzie wiersza poleceń PostgreSQL , psql, obsługuje również ładowanie danych z nazwanych potoków.

W systemie Windows

Dostęp do nazwanego potoku można uzyskać podobnie jak do pliku. Win32 funkcje SDK CreateFile, ReadFile, WriteFilei CloseHandleotwierać, czytać, pisać do z, w pobliżu rury, odpowiednio. W przeciwieństwie do Uniksa nie ma interfejsu wiersza poleceń , z wyjątkiem PowerShell .

Potoki nazwane nie mogą być tworzone jako pliki w normalnym systemie plików, w przeciwieństwie do Uniksa. Również w przeciwieństwie do swoich uniksowych odpowiedników, nazwane potoki są nietrwałe (usuwane po zamknięciu ostatniego odniesienia do nich). Każdy potok jest umieszczany w katalogu głównym systemu plików nazwanego potoku (NPFS), zamontowanym pod specjalną ścieżką \\.\pipe\(tj. potok o nazwie " foo " miałby pełną nazwę ścieżki \\.\pipe\foo). Potoki anonimowe używane w potokach są w rzeczywistości nazwanymi potokami o losowej nazwie.

Są bardzo rzadko widywane przez użytkowników, ale są godne uwagi wyjątki. VMware Workstation PC sprzętowej wirtualizacji narzędzie, na przykład, może narazić emulowane porty szeregowe do systemu hosta jak potoki nazwane, a WinDBG kernel mode debugger od Microsoft obsługuje nazwanych potoków jako transport do debugowania sesji (w rzeczywistości, VMware i WinDbg może być połączone razem – ponieważ WinDbg zwykle wymaga połączenia szeregowego z komputerem docelowym – pozwalając programistom sterowników na tworzenie i testowanie na jednym komputerze). Oba programy wymagają od użytkownika wprowadzenia nazw w formularzu. \\.\pipe\name

Potoki nazwane systemu Windows NT mogą dziedziczyć kontekst zabezpieczeń.

Podsumowanie nazwanych potoków w systemie Microsoft Windows:

W programie .NET Framework 3.5 dodano obsługę nazwanych potoków.

Potoki nazwane mogą być również używane jako punkt końcowy w programie Microsoft SQL Server .

Nazwane potoki są również protokołem sieciowym w pakiecie Server Message Block (SMB), opartym na wykorzystaniu specjalnego udziału komunikacji między procesami (IPC). IPC SMB może bezproblemowo i transparentnie przekazywać kontekst uwierzytelniania użytkownika do potoków nazwanych. Cały zestaw usług protokołu NT Domain w systemie Windows NT jest zaimplementowany jako usługa DCE/RPC przez potoki nazwane, podobnie jak aplikacje administracyjne programu Exchange 5.5.

Zobacz też

Bibliografia

Zewnętrzne linki