FIFO預設是一個擱置性(blocking)
如果read遇到擱置性(blocking)FIFO就會等到write提供資料時,才會unblock.
而write遇到擱置性(blocking)FIFO會等到資料可以寫入為止.
在管線中系統會分配一塊buffer而這個buffer的大小定義在limits.h中的 PIPE_BUF
在linux或其他unix系統上,通常是4096位元組.
若是等於或小於PIPE_BUF位元組的資料要寫入FIFO,而FIFO開啟為O_WRONLY的擱置性模式,
就會寫入全部資料或是完全都不寫.
如果確定寫入的是一個擱置性的FIFO,而且寫入量小於PIPE_BUF位元組,
LINUX系統保證資料不 會被穿插也就是這個動作是atomic的.
沒有留言:
張貼留言