ファイル同時アクセス – プログラミング – Home

通知
すべてクリア

ファイル同時アクセス


初心者Z
 初心者Z
(@初心者Z)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

マルチスレッドで、同一ファイルをopen-write-close している状況で
片方がopenしてる時に片方でcloseしてしまった場合問題ないでしょうか?

あるプログラムでワトソン博士が出たのですが、どうも上記のような操作
をしているファイルでfcloseの中で例外エラーが出てるようなんですが
それ以上調べることができず困っています。


引用解決済
トピックタグ
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

書き込みモードで、同時に2つのスレッドからopenしてる時点で
おかしいのでわ?
Writeでのファイルオープンは、排他ロックしましょうね。
(てか、open時にエラー出てませんか?)


返信引用
駄犬
 駄犬
(@駄犬)
ゲスト
結合: 23年前
投稿: 59
 

>>をしているファイルでfcloseの中で例外エラーが出てるようなんですが
>>それ以上調べることができず困っています。
>(てか、open時にエラー出てませんか?)
原因はfopenでエラー(ポインタがNULL)なのにfcloseしてるからなんでしょうね。

#仮にエラーにならなかったとしてもファイルがまともに作成されるとは思えないけど。


返信引用
初心者Z
 初心者Z
(@初心者Z)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

ありがとうございます。

fopen ですが、エラーチェックはやっています。
fopenで過去記事を検索したのですが、fp = fopen( psPath,rb))で
マルチスレッドでopenできるという記事がありました。自分の場合は
rb+ なので同じかどうかはわかりませんが。


返信引用
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

ちゃんと読んでます・・・??

>書き込みモードで、同時に2つのスレッドからopenしてる時点で
>おかしいのでわ?

rb+は、書き込みモードでしょ?
rbは? 読み込みモードですね?

回答は、
>書き込みモードで、同時に2つのスレッドからopenしてる時点で
>おかしいのでわ?
>Writeでのファイルオープンは、排他ロックしましょうね。
>(てか、open時にエラー出てませんか?)

となります。
せっかくのレスなんですから、理解できるまでちゃんと読んで
もらいたいものです。

>fopen ですが、エラーチェックはやっています。

本当に正しいエラーチェックができているか疑問です。


返信引用
初心者Z
 初心者Z
(@初心者Z)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

>rb+は、書き込みモードでしょ?
>rbは? 読み込みモードですね?

すいません、プログラムは修正します。どうもありがとうございます。

>本当に正しいエラーチェックができているか疑問です。

一応NULLでチェックししているのですが。


返信引用
駄犬
 駄犬
(@駄犬)
ゲスト
結合: 23年前
投稿: 59
 

>一応NULLでチェックししているのですが。

NULLをはじいた先でfcloseってことはないですよね。
・・・大丈夫ですか?
では先の私の発言は無視してください。
失礼しました。


返信引用
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

>>rb+は、書き込みモードでしょ?
>>rbは? 読み込みモードですね?

>すいません、プログラムは修正します。どうもありがとうございます。

どのように修正されるのかよくわからないのですが。。。

とにかく、同時に2つのスレッドから書き込みオープンするのは、
その時点で間違いです。まずその認識を持ちましょう。

これ以上は、具体的に何がやりたいのか、ソースはどうなっているのか
等がわからなければ、どうしようもないでしょう。きっと。
回答できるように質問を工夫してみてください。
現時点では「やったらイカンことをやったら、なんかエラーは
でるでしょ」という状況です。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

今MSDNもっていないので確実でないのですが
fopenかfwriteの時にshared モードの指定があったはずです
間違ってもopenポインタの共有などはしていませんよね


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました