Pipe vs FIFO (Named Pipe)

Pipe ve Fifo  birer inter process communication mekanizmasıdır.

# Pipe vs FIFO

Fifo ile pipe arasındaki en temel fark fifo dosya sisteminde bulunur ve  bir isme sahiptir. Bu dosya birden fazla process tarafından aynı anda hem yazma hem erişime açık özel bir dosya tipidir.

Pipe dosya sisteminde bulunmaz. Memoryde bulunur.

Pipe tek yönlüdür, fifo ise çift yönlüdür.

Tek yönlüde uç noktalardan biri yazarken diğeri okur. Çift yönlüde ise uç noktalar hem okuyabilir hem yazabilir.

Pipe localdir, network üzerinden pipe işlemi gerçekleşmez. Fifo ise network üzerinden gerçekleştirilebilir.

Fifoda network üzerinden taşıma esnasında redirector kullanılır.

Fifo bir dosya olduğundan yetkiler düzenlenebilirken, pipeda yetki düzenlemesi yapılmaz.

Pipeda data transferi child, parent processler arasında olurken, fifo da böyle bir kısıtlama yoktur, bağımsız prosesler haberleşebilir.

Pipe, her zaman açık durumundadır, herhangi bir açma işlemine gerek olmaz. Fifo ise bir dosya olduğundan read write işlemlerinde açılır.

Fifoda aynı anda uç processlerinin aynı anda aktif olmasına gerek yokken, Pipeda ıç nokta processinde çalışır olması gerekir.

# Unnamed, Anonymous Pipe

| operatörü ile aslında  isimsiz pipe oluşturulmuştur.

Örneğin aşağıdaki komutta dosyalar listelenir. Birinci komutun çıktısı ikinci komutun girdisine bağlanır.

ls -l | grep dosyam

| operatörü unix/linux dünyasında unnamed pipe olarak adlandırılır.

Windows tarafı ise unnamed demek yerine anonymous pipe demeyi tercih etmektedir.

# Named Pipe

Dosya sisteminde adı olan pipe tipindeki pipelara named pipe denir.

Named Pipe, FIFO olarakta bilinir.

Linux/unixde ls -l çektiğinizde ilk karakter de p işareti görüyorsanız bu o dosyanın pipe olduğu anlamına gelir.

Proseslerin kendi aralarında veri taşıması sırasında data kernel üzerinden geçer,

Named pipe ı bir subsystem olarak düşünebilirsiniz. Named pipe aslında bir dosya sistemine sahiptir.

Diğer dosya sistemleri (CIFS gibi) bu dosya sistemine erişebilir.

# Pipe vs File

Pipe fifo inode değeri kernel, normal bir dosyanın inode değeri dosya sisteminde tutulur. (Unix/Linux)

Pipe büyüklük olarak çok kısıtlıdır.

# Pipe Server , Pipe Client

Network üzerinden gerçekleştirilen fifo proseslerinde named pipe oluşturan process tarafı pipe server, pipea bağlanan process tarafına pipe client denir.

Hem Linux/Unix, hem de Windows lar da name pipe desteklenir.

# Windows Pipe Name

Windowslarda her bir pipe bir unique pipe name e sahiptir.

UNC (\\ServerName\pipe\PipeName) belirterek uzaktaki bir pipelinea bağlantı sağlanabilir.