ファーストをしようとしたときに権限拒否エラーを取得し、ファイルを削除するには、すべての皆さん、こんにちはの
私の問題は、私のプログラムが別のプログラムによって読み込まれ、帽子の後に私のプログラムは、ファイルを削除する必要がありますファイルを、作成していること、です。
次のコードを使用して、ファイルが存在するか、他のプログラムがファイルを使用しているかどうかを確認します。その後、ファイルを削除したい:
問題が発生する可能性のある人は誰も知りません。興味深いことに、これは他のファイルでも機能します。また、foo.txt
も特別なアクセス権なしでこのプログラムによって作成されます。
感謝:)
/* just suppose the things with argc and argv work, I know it's uggly
but I need it as a call back function later in the code */
BOOL isFileRdy(char *filePath)
{
int argc = 1;
void *argv[1];
argv[0]= (void*) filePath;
return isFileRdyCBF(argv, argc);
}
BOOL isFileRdyCBF(void *argv[], int argc)
{
/* I used */
char *filePath = (char*) argv[0];
FILE *fDes = NULL;
BOOL _fileExists = FALSE;
BOOL _fileBussy = TRUE;
_fileExists = fileExists(filePath);
if(_fileExists)
{
fDes = fopen(filePath, "a+");
if(fDes!=NULL)
{
_fileBussy = FALSE;
if(fclose(fDes)!=0)
{
printf("\nERROR could not close file stream!");
printf("\n '%s'\n\n", filePath);
return FALSE;
}
}
}
return (_fileExists==TRUE && _fileBussy==FALSE) ? TRUE : FALSE;
}
次のコードとは完全に関係がありません。ハードコードされたファイル名のバックスラッシュはエスケープされません。 – WhozCraig
\は特別な意味を持ち、特にWindowsプラットフォームの場合は特に意味があります。あなたが直面したエラーと一緒に完全なコードを提供してください。 –
例: 'remove(" C:\\ test \\ foo.txt ");'これはまた動作するはずです: 'remove(" c:/test/foo.txt ");' –