File-Descriptors

強制 write(2) 返回 0

  • October 31, 2014

我正在編寫單元測試,並想測試一些程式碼對 write(2) 呼叫返回零的情況的處理。與以往一樣,保持測試盡可能真實會很好。

我可以為此目的使用任何類型的文件描述符,只要它在呼叫 write(2) 時返回零。我還可以傳入幾乎任何大小的數據來寫入。

但是,我希望能夠在多次返回零之後從另一個執行緒更改描述符的行為,因此僅寫入長度為零的數據是不可接受的。

任何人都可以想出一種合理可移植、可靠的方法來使文件描述符進入這種狀態嗎?目標是最近的 Linux,但如果可能的話,更廣泛地工作(*BSD、OS X 等)會很棒。

如果影響實際輸入很困難(例如對磁碟錯誤做出反應),您應該在函式周圍做一個薄包裝,這取決於一些全域狀態。在這種情況下,我會放置這樣一個包裝器write()以返回 0 或實際返回 from write()

如果包裝器的成本太大,請使用一些#define能夠完全省略生產系統中的包裝器程式碼,但至少您可以write()通過根據需要設置全域狀態來測試頂部的層以在單元測試期間做出正確反應。

引用自:https://unix.stackexchange.com/questions/165211