0

重複の可能性:
C で FILE* が指すファイルを削除するにはどうすればよいですか?

Cプログラムの最後でファイルを削除したいのですが、その時点でファイル名は長い間忘れられていました。FILE * を使用して直接削除するか、ファイル名を見つけてから remove()... を使用できれば、ファイル名を記憶する必要がなくなります。

これを達成できる方法を知っている人はいますか?私は Windows システムを使用していますが、移植性を維持する必要があるため、OS 固有のものは使用できません。

4

3 に答える 3

3

FILE * を使用して直接削除するか、ファイル名を見つけてから remove() を使用できればいいのですが、このためにファイル名を記憶する必要はありません。

からファイル名を取得する方法はありませんFILE *。AFILE *は必ずしも実際のファイルではありません。popen(3)たとえば、考えてみてください。

于 2012-08-21T14:07:53.193 に答える
1

例えば

#include <stdio.h>
#include <stdlib.h>

void endproc(void){
    remove("removeFile.dat");
}

int main(){
    atexit(endproc);
    return 0;
}
于 2012-08-21T14:19:03.720 に答える
1

移植可能な方法はわかりませんが、Linux バージョン (他のユニックスでも動作する可能性があります) と Windows バージョンがあります。

Linux: readlink()onが動作するsprintf("/proc/self/fd/%d",fd)はずです

Windows: GetFileInformationByHandleEx()構造体の一部として名前が表示されます (MSDN を検索してください。詳細は頭にありません)。

于 2012-08-21T14:13:45.503 に答える