• 締切済み

fopenでのエラー

こんばんわ、長田と申します。  現在WINNTserverのsp6で動作させるアプリを VC6作成しているのですが同一ファイルを一定周期(数秒)で オープン→ファイル処理→クローズと行っていると あるタイミングでファイルオープンエラーが発生してしまいます。  同一アプリケーションをWIN2000で動作させた場合は 発生しないのでOSに問題があるかと疑っている のですが、どなたかこのような現象に心当たりの ある方はいらっしゃらないでしょうか? ちなみに  ファイルオープンー>fopen()  ファイルクローズ->fclose() を使用しています。 宜しくお願いします。

みんなの回答

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

せめて、どんなエラーかぐらいは書いてくれないと(^^; fopenならerrnoにエラーコードが入っているはずですし、 Windowsなら専用の関数もあるはずですし。 あとは、ファイルは他のプロセス等で使う可能性が無いファイルかどうかとか、 一定周期とは書いてある物の数秒とあるから不定なのか、 それとも具体的に時間が書けるなら具体的な秒数を書くとか, ファイル処理はいったいどんなもので、処理時間は問題にならないくらい短いのかどうか、 一定周期とはどうやって実現しているかとか, いろいろ詳しく書かないと検討がつきません。

関連するQ&A

  • ファイルopenエラーになってしまう。

    はじめまして。 今、open関数を使用してファイルをオープン(3秒に1回)しているのですが、一定周期でエラーになってしまいます。  周期:2時間7分 このファイルにIOをかけるのは、ここだけでcloseもちゃんとあります。openのリトライは3回(sleep(300))です。原因が全くわかりません。 どうか、宜しくお願いします。 (win2000 VC6.0)

  • fopenのコード

    初歩的なことですがファイルをオープンするfopenの例題で *************************** #include<stdio.h> int main (void) {   FILE  *fp;     fp = fopen ("test1.txt","w");   if (fp==NULL) {     printf ("ファイルをオープンできませんでした。\n");     return 1;   }    else {     printf ("ファイルをオープンしました。\n");   }    fclose (fp);   printf ("ファイルをクローズしました。\n");    return  0; } *********************************というのがあります。 この中のif文の中のreturnの戻り値が1なのはなぜでしょうか? (例題によっては-1というのもありましたが・・。) またどこに戻り値を返すのでしょうか? もしファイルがオープンできなければその時点で終了になるのでしょうか?初歩的なところですがお願いします。

  • fopenでエラーとなる

    fopenを使用してログファイルへ書き込み時に、errno=13 Permission denied のエラーがまれに発生するときがあります。 ログファイルは、1ログを書く毎に、その都度、オープン/クローズしています。fopenの第二引数は"a+t"を指定しています。(テキストモード追加書き込み。+を指定している理由は、更新は行いませんが、Ctrl-Zの削除の為、+を指定することがマイクロソフトにより推奨されているため) もちろん、このログファイル(ディレクトリ含む)への書き込み権限がないということは、ありません。(あれば必ず発生しますので) 従って一時的に、書き込み不能となる状態が発生していると考えられます。エラーが発生した後も、一定の時間が経過した後には書き込めるようになります。 このような事象に遭遇したことのあるかたが、おりましたら、その旨回答下さい。又、解決方法(このような事態をさける方法)をご存じのかたがおりましたら、教えて下さい。 実行環境 Windows2003-server 開発環境 Visual Studio .NET 2003のC++による開発(コードの内容は実質的にC言語を使用、MFCは使用していません)

  • fopenしてくれない。。。

    こんにちは。PHP初級者です。 postgresqlに入れたデータをCSVファイルに書き込んで、出力してみたいと思って以下のプログラムを作ってみました。 $file_name ="insatu.csv"; //データベースから呼び出し以下の$arrayへいれるデータは省略します。 //今回は1行のみのデータを入力プログラムになってますが、本当は何行もやるプログラムとなってます。 $array = compact("a","b","c","d","e","f","g","h","i","j","k","l"); $string = implode("," , $array); $file = fopen($file_name, "a") or die ("openエラー $file_name"); flock($file, LOCK_EX); fputs($file, $string."\n"); flock($file, LOCK_UN); fclose($file); $file = fopen($file_name, "r"); while($array = fgetcsv($file, 1000, ",")){ echo "<hr> \n"; for($i=0; $i< count($array); $i++){ echo $array[$i]."<br>"; } } fclose($file); なぜか最初の fopenで dieの方へ行って OPENエラーメッセージが出てきます。 この作業をするためには何かあらかじめ入れなくてはいけない構文とかあるんでしょうか?何か間違っていますでしょうか? それともphp.iniを設定するとかしなくてはいけないんでしょうか? php5を使用してますが、php.iniやphp.ini-distはともに見つからず。 困り果ててます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • fopenとfcloseの繰り返しでpanic (FREEBSD)

    以下のプログラムをコンパイルして実行すると panicが発生して強制リブートしてしまいました。 これは何が原因なのでしょうか? 頻繁にfopenとfcloseを繰り返したら駄目なのでしょうか・・。 #include <stdio.h> main(){ FILE *fp; while(1){ fp=fopen("test.txt","wt"); fprintf(fp,"aaaaaaaaaa\n"); fclose(fp); } }

  • fopenのmode「w」について

    宜しくお願い致します。 fopenのmode「w」で、ファイルを新規作成しつつ、データを書込みたい場合で、サーバ間でファイルを作成したい場合、http://~では、mode「w」でのファイル作成は出来ないですが、ftp://でのファイル作成は出来るとマニュアルに書いてあるのですが、failed to open streamエラーが発生してファイルが作れません。 PHP.iniで、open_basedirの指定はされておらず、allow_url_fopenはOnになっているのですが・・・。 何卒、ご教授の程、宜しくお願い致します。

    • 締切済み
    • PHP
  • C言語 fopen

    初心者の質問になります。現在ファイルがオープンできるかどうかを確認したいのですが、指定したディレクトリの中のファイルを指定しているのですが、オープンできませんという結果が返ってきます。同じ場所にファイルを置いてファイル名だけでしていするとオープンが出来ます。 何卒よろしくおねがいします。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { FILE *fp; char *filename = "/file/d20151001.csv"; fp = fopen(filename,"r"); if (fp == NULL) { printf("\aファイルをオープンできません\n"); } else { printf("ファイルがオープンできました\n"); fclose(fp); } return (0); } ディレクトリ(わかりにくくてすいません汗) file------d20151001.csv data.c 環境 VisualStudio

  • fopen関数について

    ----------------------------------------- #include<stdio.h> #include<stdlib.h> int main() { FILE *fp; char filename[80],ss[256]; printf("ファイル名="); gets(filename); if((fp=fopen(filename,"r"))==NULL){ printf("ファイルをオープンできません.\n"); exit(1); } while(fgets(ss,256,fp)!=NULL){ printf("%s",ss); } puts(""); fclose(fp); return 0; } ----------------------------------------- 初心者な内容の質問ですいません。 以上のプログラムでまず、「gets(filename);」により、「filename[80]」の配列に「aaa.txt」という文字列を格納し、そのファイルをfopenで読もう込もうとしています。 そこで、 if((fp=fopen(filename,"r"))==NULL) の部分に疑問があるのですが、「filename」という配列名だけで中身の「aaa.txt」と何故認識できるのでしょうか? 配列名ということで、先頭アドレスのみの情報しかないと思いました。 教えていただければ嬉しいです。

  • fopenが動作しない

    PHPで、別のファイルで取得したファイル名をもとに fopenを使ってファイルを開こうとしているのですが、 どうしてもうまくいきません。 具体的な症状は以下のとおりです。 a.phpの中で、 … $file[2] = "hoge02.xml"; … のように、配列にファイル名を代入します。 これを b.php で require_once('a.php'); とした後 print_r($file); とすると Array([0] => … [2] => "hoge02.xml" [3]…) のように表示されるところまでは確認できました。 しかし、 $file0 = $file[2]; $fp = fopen("$file0", 'r'); とすると Warning: fopen( "hoge02.xml" ) [function.fopen]: failed to open stream: Invalid argument in [b.php の絶対アドレス] とエラーが出てしまい、実行することが出来ません。 そこで、 //$file0 = $file[2]; $file0 = "hoge02.xml"; $fp = fopen("$file0",'r'); とすると実行することが出来ました。 作成しているシステム上、fopenの1つ目の引数には変数または配列を使いたいのですが、 エラーが発生してどうしてもうまくいきません。 自分なりにも似たようなエラーがないか調べたのですが、 それらしいものを見つけることが出来ず、お手上げ状態です。 どなたか解決策をご存じないでしょうか。 ご教授の程、よろしくお願い致します。

    • 締切済み
    • PHP
  • fcloseで発生するエラーについて。

    昨日「windowsプログラムのデバッグ」で投稿させて頂いた者です。 要点は「どのようなときにfcloseがエラーをおこすか」です。 Windowsプログラムでバグを探したところデバッグ用のログ出力ファイルを fcloseする時にエラーがおこりプログラムがエラーを起こして終了している ことがわかりました。 プログラムを実行させて一定操作を行うと、プログラムの最後に行われるfcloseでエラーが起こります。 プログラムを実行させてそのまま(×等で)終了させたときにはエラーが起こらずに正常な書き込みがされているので、 メッセージの処理等をしている間に変な処理を入れてしまているのだと思いますが、 実際にログファイルへの書き込みはfcloseの直前までできているのでなぜエラーが起こるのかよくわかりません。 if((fp=fopen("log.txt","w")==NULL)return -1; とやっているのでfopenは成功していると思います。 fcloseがエラーとなるのはどのような原因が考えられるのでしょうか。 「意味がわからないので~を説明しろ」等でも構いませんのでご回答お願いいたします。 【環境】 VC6.0++ProffessionalEdition windows2000 【その他】 -エラー文の内容- "0x77fcc465"の命令が"0xfffdfffa"のメモリを参照しました。 メモリが"read"になることはできませんでした。