問題タブ [fclose]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - セグメンテーション違反を引き起こす fclose()
解析中のタブ区切りのテキスト ファイルがあります。その最初の列には、「1」、「2」、...、「X」、「Y」などの一連の文字列を示す形式chrX
の文字列が含まれます。X
ファイルが解析されると、これらはそれぞれchar*
呼び出された に格納されます。chromosome
テキスト ファイルは、最初の列で辞書式に並べ替えられます。つまり、"chr1" で始まり、次に "chr2" などの行がいくつかあります。
「chrX」エントリごとに、このエントリに関連付けられている別のファイルを開く必要があります。
openSourceFile
次のように定義された関数があります。
問題は、次の行で最初の染色体から 2 番目の染色体 ( からchr1
までchr2
) に移動するセグメンテーション フォールトでアプリケーションが終了し、最初に開いた染色体ファイルを閉じることです。
fclose
セグメンテーション違反が発生するまで、このファイルからデータを読み取っているため、NULL ポインターを渡していないことはわかっています。これを条件付きでラップすることもできますが、それでもフォールトが発生します。
さらに、アプリケーションが行を解析し、ソース ファイルからデータを正しく読み取るため、 openSourceFile
(少なくともchr1
の の最初のファイル ハンドルを設定するときに) が機能することがわかっています。FILE*
chr1
FILE*
fclose
セグメンテーション違反が発生する原因となっているこの呼び出しの原因は何ですか?
c - fclose()/pclose() が一部のファイル ポインタでブロックされる場合がある
fclose()
子プロセスが終了するまで、ファイル記述子ブロックを ing した後、ここで呼び出しますdup()
(おそらくストリームが終了したため)。
ただし、のpipe()
、fork()
、を手動で実行してから、パイプの読み取りファイル記述子を ing すると、元のファイルを閉じてもブロックされません。execvp()
popen()
dup()
なぜこれが発生するのですか? また、FILE *
返された fromを閉じてpopen()
、代わりにファイル記述子を使用するにはどうすればよいですか?
アップデート:
ドキュメントには を使用するように記載されていますがpclose()
、fclose()
ブロックも同様です。さらに、私は glibc コードをいじって、 をpclose()
呼び出すだけfclose()
です。fclose()
またはを使用しても、動作は同じpclose()
です。
multithreading - 同じファイルへの複数のファイル記述子、C
同じファイルを開いて読み取る (書き込みではない) マルチスレッド アプリケーションがあります。スレッドごとに異なるファイル記述子を開いています (ただし、それらはすべて同じファイルを指しています)。次に、各スレッドはファイルを読み取り、ファイルを閉じて、EOF に達した場合に再度開くことができます。これでよろしいですか?ファイル記述子で fclose() を実行すると、同じファイルを指す他のファイル記述子に影響しますか?
c - 出力ストリームで fclose を使用できません。入力ストリームは問題ありません
最後にプログラムを実行するとfclose(outputFile);
、エラーが発生します。glibc が検出されました...破損した二重リンク リスト
ただし、これについて紛らわしいのは、私がそのfclose(inputFile);
真上にあり、正常に機能することです。助言がありますか?
c - 同じファイル記述子に対して 2 つのスレッドから fwrite と fclose を並列に呼び出すことはできますか?
fwrite
&fclose
が同じファイル記述子に対して 2 つのスレッドから並行して呼び出されるとどうなりますか?
c - fwrite がハングする原因は何ですか?
私のコードは、次のスタックで fwrite をぶら下げています:
これはsolarisで起こっているようです。
私が考えることができる唯一の間違ったことは、私のコードが fwrite を実行するために使用されるのと同じ FILE ポインターで並列 fclose を実行しようとする可能性があることです。並列 fclose が発生した場合、この種のスタックにつながりますか?
しかし、並列 fclose 呼び出しが実際に行われたかどうかはわかりません。
ここで何が問題になる可能性がありますか?
c++ - fclose() でファイルを閉じますが、ファイルはまだ使用中です
自分のプログラムでも使用 (読み取り) されているファイルを自分のプログラムを使用して削除/上書きする際に問題が発生しました。問題は、私のプログラムがファイル (output.txt) からデータを読み取っているため、ファイルが「使用中」の状態になり、ファイルを削除または上書きできなくなることです。
fclose(); で使用後にファイルを閉じるため、ファイルが「使用中」のままである理由がわかりません。
これは私のコードです:
fclose() を使用してファイルを閉じますが、プログラムが完全にシャットダウンされるまで、ファイルはプログラムで使用されたままになります。
削除/上書きできるようにファイルを解放する解決策は何ですか?
実際には、私のコードは終わりのないループではありません。)
前もって感謝します!
マルコ
アップデート
「使用中」のファイルも生成するコードの一部を尋ねるように。これはループではなく、この関数は main(); から呼び出されています。
コードの一部を次に示します。
while ループはファイルを解析します。output.txt には 9 個の変数のセットが含まれています。セットの数は不明ですが、常に 9 個のセットになっています。
output.txt には、たとえば、0,1,2,3,4,5,6,7,8,8,7,6,5,4,1,2,3,0 を含めることができます。
更新 2
コード:
pre を再度使用して申し訳ありませんが、このサイトのフォーマットがわかりません :(
php - fsockopenを使用してコードを書き直し、代わりにcurlを使用する
私のホストはfsockopenを許可していませんが、curlは許可しています。CLIのcurlを使用して満足していますが、PHPで使用する必要はあまりありません。代わりにcurlを使用してこれを書くにはどうすればよいですか?
$xmlrpcReqとLengthは前に定義されています。
どうもありがとう!
c - fopen()、fclose()はどの程度正確に機能しますか?
関数fopen、fclose、socket、closesocketについて疑問に思っていました。fopenを呼び出したり、ソケットを開いたりするとき、正確には何が起こっていますか(特にメモリに関して)?
ファイル/ソケットを閉じずに開くと、メモリリークが発生する可能性がありますか?
そして第三に、ソケットはどのように作成され、メモリに関してはどのように見えますか?
また、ソケットの読み取りとデータの送信におけるオペレーティングシステム(Windows)の役割にも関心があります。
c++ - fclose() でプログラムがクラッシュする
私のプログラムはコードのこの部分でクラッシュします:
何も出力しません。代わりに次の行を書くと:
どちらも何も出力せず、それ以上のコメントなしでプログラムをクラッシュさせるだけです。
プログラムの前半で、次の行でファイルを初期化しました。
プログラムがクラッシュする原因は何ですか?