1. 程式人生 > >Windows 匿名管道 資料丟失

Windows 匿名管道 資料丟失

最近做一個 Video Capture 的測試程式,從 MSDN 現學,程式碼重寫改了3遍,從 VFW 到 DirectShow 再到 Media Foundation,輸出一直有問題。

今天終於找到原因了。

A.exe | B.exe

我在 A.exe 用 fwrite 把資料寫到 stdout,然後 B.exe 從 stdout 讀資料,就在這裡會有資料丟失。A.exe > test.data 仍然不行。

今天試著不往 stdout 寫了,直接寫到檔案裡,居然一點錯誤都沒有。好吧,不知道 Windows 下的 pipe 有什麼問題。難道是不支援 binary mode 嗎?又或者buffer 太小,超過了就丟失資料?為了讓 B.exe 能夠讀資料,只能建立 Named Pipe 了。Linux 下可以直接用 fifo,WIndows 下就用 CreateNamedPipe 吧,無非是多用兩個 API 而已。