2013-03-13 10 views
11

mkfifo ile yapılmış bir adlandırılmış boruya yazıyorum. Ancak (ex) ls > myNamedPipe komutunu çalıştırdığımda, artık bash'a komut giremiyorum. Hala yazı yazabilirim ve bu oldukça fazla.Adlandırılmış boruya yazamıyor

cevap

18

Başka bir yerden okuyana kadar adlandırılmış bir boru açık kalır. Bu, farklı süreçler arasındaki iletişimi sağlamaktır.

Dene:

mkfifo fifo 
echo "foo" > fifo 

Sonra başka uç birim açın ve: Eğer ilk terminale dönerseniz

cat fifo 

, size diğer komutlar şimdi girebilirsiniz göreceksiniz. ters ile happends da neyi

bakınız:

: Eğer fıfo'ya bir dosya tanıtıcı takmak, fıfo'ya şeyler yazmak çalışırken "asmak" için değil, terminal istiyorsanız

# terminal 1 
cat fifo 

# terminal 2 
echo "foo" > fifo 

# and now you can see "foo" on terminal 1 

mkfifo fifo 
exec 3<> fifo 
echo "foo" > fifo 
echo "bar" > fifo 
+0

TEŞEKKÜR EDERİZ, bu mantıklı! çok teşekkürler! – tay10r

+0

Teşekkürler - bu harika çalışıyor! Bana neden olduğunu açıklayabilir misin? Exec 3 <> fifo'nun satırının işleri nasıl düzelttiğini anlamıyorum .. – Joost

+4

Fifo'yu bir dosya tanıtıcısına eklemek, kabuğun fifo'ya yazılmış verileri arabelleğe almasına neden olur. O olmadan, bir şey yazılana kadar okunana kadar fifo bloklarına yazılır. Dosya tanıtıcısı ile "foo" ve "bar" kabuk tarafından tamponlanır ve bu dosya tanıtıcısından okuyan her şey daha sonra okuyabilir. – chepner

İlgili konular