管道是Linux的十種文件類型之一,使用管道通信本質上還是以文件作為通信的媒介 有名管道+無名管道=管道 有名管道(FIFO文件):就是 有文件名的管道, 可以用於任意兩個進程間的通信 無名管道(pipe文件):就是沒有文件名的管道, 只能用於父子進程之間的通信 mkfifo 創建有名管道,管道不能 ...
管道是Linux的十種文件類型之一,使用管道通信本質上還是以文件作為通信的媒介
有名管道+無名管道=管道
有名管道(FIFO文件):就是 有文件名的管道, 可以用於任意兩個進程間的通信
無名管道(pipe文件):就是沒有文件名的管道, 只能用於父子進程之間的通信
mkfifo
$mkfifo a.pipe
$ls -l
prw-rw-r-- 1 jiang jiang 0 10月 7 08:47 pipe|
創建有名管道,管道不能執行,不可寫入, 就像吸管,一邊堵死, 另外一頭也傳不進,就在管口堵著, 還是一個非常短,短到不能存儲一丁點飲料的吸管只有讀端打開的時候寫端的數據才能通過管道抵達目的地, 管道本身可不會存放任何數據
在terminal_1:
$echo hello > pipe #打開管道的寫端
#卡在那, 因為讀端沒有打開, 就像咬緊吸管不抽氣, 飲料就進不到吸管
在terminal_2:
$cat pipe #打開管道的讀端
hello #讀端打開了, 管道就通了, 實現了在兩個terminal(兩個進程)之間的通信
回到terminal_1
$echo hello > pipe #打開管道的寫端
$ #數據被傳出了, terminal_1就結束卡頓了