オープンした出力ファイルにバッファを書き込もうとするCコードがあります。コードを実行しようとするとセグメンテーションフォルトが発生します。Linuxでfwriteのsegfault
if (fwrite(header, record_size, 1, uOutfile) != 1)
{
return 0;
}
ヘッダが適切に人口があると私は、バッファヘッダーのheader.theサイズの内容をプリントアウトすることができています間違いなくそこrecord_size.Is checking.?Any他の理由で価値が何よりも大きいですfwriteのはsegfault.Gdbing問題は、出力ファイルは、これまでcreated.howされていないと私のディレクトリのls -lでは、サイズ0の出力ファイルが表示されていることを示唆しているようだ次の出力
0x00007ffff6b7d66d in _IO_fwrite (buf=0x726d60, size=16, count=1, fp=0x738820) at iofwrite.c:43
43 iofwrite.c: No such file or directory.
in iofwrite.c
を与え引き起こす可能性があります場所バイト。
誰かが問題に懐疑的になることができたら大変感謝します。
EDIT:コードファイルを開きます。
outfd = open(out, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0664);
if (outfd == -1) {
dagutil_panic("Could not open %s for writing.\n", out);
}
uOutfile = fdopen(outfd, "w");
ファイルを開くコードを追加してください。 –
outfd = open(out、O_RDWR | O_CREAT | O_TRUNC | O_LARGEFILE、0664); if(outfd == -1) { dagutil_panic( "書き込みに%sを開くことができませんでした。\ n"、out); } uOutfile = fdopen(outfd、 "w"); – liv2hak
"出力ファイルが作成されていないことを示唆しているようです"←それについては確かですか? 'gdb'があなたのソースコードを見つけることができないことを私に示唆しています - あなたが.cファイルを出力していない限り。 – Thanatos