介紹
用在兩個不同執行的程式溝通, 他就像是一條水管(pipeline file)將兩個程式連接起來
其中一邊不斷的將水倒進去, 另一邊則取水, 這樣就可以達到資料
Example
session 1 :
建立 pipe
cd /tmp
mkfifo test
傳送資料進去
echo "Hello Jex" > test
echo "line 1" > test&
在命令的最後面加上 &
可以讓它背景作業
session 2 :
將 session 1 存的資料拿出來
cd /tmp
cat test
fifo (命名通道)
這些參數似乎要用 C 寫才能使用
讀 :
- O_NONBLOCK enable : 立刻返回成功
- O_NONBLOCK dieable : block 直到有資料寫入而開啟 FIFO
寫 :
- O_NONBLOCK enable : 立刻返回失敗, error code 為 ENXIO
- O_NONBLOCK dieable : block 直到有資料寫入而開啟 FIFO
打開檔案預設是 block
mkfifo 與 fifo 的差異
mkfifo 由 pipe 函數建立並打開, fifo 由 mkfifo 函數建立, 打開用 open
差別只在建立與開啟的方式不同, 一旦完成這些, 在通道 I/O 及 FIFO 幾乎一樣
- mkfifo - make FIFOs (named pipes)
- mknod - make block or character special files
ref :