在Windows下寫了一個工具,用c語言的FILE來打開文件,現在出問題,當多個線程使用fopen以只讀得方式來打開文件時,只能有一個線程可以打開文件,其它線程都打開失敗,這是什么情況?
難道Windows下一個文件不能同時被一個進程內的多個線程打開,有沒有什么辦法可以做到這個?
5 个解决方案
不行的,fopen都是獨占打開,本身C庫沒有線程庫不考慮重入問題的
請使用 API
CreateFile(szInFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)
這樣才能共享
文件描述符應該被線程所共享的吧, 其他線程可以直接操作啊