Cプログラムの最後でファイルを削除したいのですが、その時点でファイル名は長い間忘れられていました。FILE * を使用して直接削除するか、ファイル名を見つけてから remove()... を使用できれば、ファイル名を記憶する必要がなくなります。
これを達成できる方法を知っている人はいますか?私は Windows システムを使用していますが、移植性を維持する必要があるため、OS 固有のものは使用できません。
Cプログラムの最後でファイルを削除したいのですが、その時点でファイル名は長い間忘れられていました。FILE * を使用して直接削除するか、ファイル名を見つけてから remove()... を使用できれば、ファイル名を記憶する必要がなくなります。
これを達成できる方法を知っている人はいますか?私は Windows システムを使用していますが、移植性を維持する必要があるため、OS 固有のものは使用できません。
FILE * を使用して直接削除するか、ファイル名を見つけてから remove() を使用できればいいのですが、このためにファイル名を記憶する必要はありません。
からファイル名を取得する方法はありませんFILE *
。AFILE *
は必ずしも実際のファイルではありません。popen(3)
たとえば、考えてみてください。
例えば
#include <stdio.h>
#include <stdlib.h>
void endproc(void){
remove("removeFile.dat");
}
int main(){
atexit(endproc);
return 0;
}
移植可能な方法はわかりませんが、Linux バージョン (他のユニックスでも動作する可能性があります) と Windows バージョンがあります。
Linux: readlink()
onが動作するsprintf("/proc/self/fd/%d",fd)
はずです
Windows: GetFileInformationByHandleEx()
構造体の一部として名前が表示されます (MSDN を検索してください。詳細は頭にありません)。