結構定義
typedef struct
{
int fd;
char *name;
}ipc_fifo_t;
{
int fd;
char *name;
}ipc_fifo_t;
接口函數
● 創建FIFO
● 創建FIFO

path指定FIFO路徑,可以是絕對路徑或相對路徑,mode指定訪問權限,若成功則返回一個FIFO結構,否則為NULL;通常被ipc_fifo_open調用。
● 打開FIFO
● 打開FIFO

flag指定打開標志,如果包含了O_CREAT標志,那么調用ipc_fifo_make創建新的FIFO對象并在打開成功后替換*f,否則如果*f為空,就分配并初始化一個fifo結構;mode指定訪問權限,僅當創建時生效。雖然f為輸入輸出參數,但操作失敗時不會影響它,也就是說沒有副作用。
● 發送數據
● 發送數據

● 接收數據

如果成功則返回已發送的字節數,否則返回-1,errno表示出錯代碼。
● 關閉FIFO

當通信結束的時候,應該調用此函數來關閉FIFO,它會先刪除FIFO文件和關閉文件描述符,最后釋放fifo結構。
● 獲取TLS FIFO
● 獲取TLS FIFO

該函數一般被發送數據接口調用,若成功則返回一個FIFO結構,否則為NULL;每個線程對應一個FIFO對象,對于同一線程,獲取的是同一個FIFO對象,而后便可調用ipc_fifo_write來發送數據。
工作流程
創建FIFO
適用于FIFO客戶端和服務端,但服務端由于要異步處理眾多FIFO客戶端,因此要注意以下2個問題,這也是使用FIFO技術通信的一些細節。
1)必須以非阻塞讀寫方式打開知名FIFO,即以O_CREAT|O_RDWR|O_NONBLOCK標志來調用ipc_fifo_open,這樣才不會阻塞等待某個客戶端以同步寫方式打開知名FIFO而返回,因為它使用O_RDWR標志,這樣自己既讀又寫,加上O_NONBLOCK,就立即返回了。
2)必須以非阻塞只讀方式打開對應客戶端FIFO,即以O_RDONLY|O_NONBLOCK標志調用ipc_fifo_open,這樣就不會阻塞接受客戶端建立連接而返回。
建立FIFO連接
發送數據