Windows下,多線程fopen以只讀方式打開一個文件不行嗎?


在Windows下寫了一個工具,用c語言的FILE來打開文件,現在出問題,當多個線程使用fopen以只讀得方式來打開文件時,只能有一個線程可以打開文件,其它線程都打開失敗,這是什么情況?
難道Windows下一個文件不能同時被一個進程內的多個線程打開,有沒有什么辦法可以做到這個?

5 个解决方案

#1


這個沒問題,可以同時打開多個,看看你的打開方式把

#2


不行的,fopen都是獨占打開,本身C庫沒有線程庫不考慮重入問題的

請使用 API

CreateFile(szInFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)

這樣才能共享

#3


如果是windows那么考慮用重疊I/0。

#4


恩,二樓正解~

#5


文件描述符應該被線程所共享的吧, 其他線程可以直接操作啊

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com