Jex’s Note

Mkfifo 指令

介紹

用在兩個不同執行的程式溝通, 他就像是一條水管(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 : * http://blog.csdn.net/jnu_simba/article/details/8953960 * http://goo.gl/vxsxoX * http://catchtest.pixnet.net/blog/post/22220521-linux%E7%A8%8B%E8%A8%AD%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98(%E5%8D%81%E5%9B%9B)

Comments