我正在处理 ac 项目,我需要从目录中删除一个文件。出于某种原因,尽管它一直说由于文件或目录不存在而无法删除。下面是我用来删除文件的代码。
void deleteOldestLog()
{
FILE *fp;
char path[FILE_PATH_BUF_LEN], *fileName;
fp = popen("ls -tr /home/myfolder/logs/ |head -1", "r");
if (fp == NULL)
{
printf("Failed to run command");
}
else
{
char removalPath[FILE_PATH_BUF_LEN];
while ((fileName = fgets(path, sizeof(path)-1, fp)) != NULL)
{
sprintf(removalPath, "/home/myfolder/logs/%s", fileName, sizeof(fileName)-1);
printf("Removing file: %s", removalPath);
if (remove(removalPath) != 0)
{
perror("ERROR DELETING LOG");
}
else
{
printf("Successfully deleted %s", removalPath);
}
break;
}
pclose(fp);
}
}
即使它说它找不到文件,因为它不存在,但我知道这不是真的,因为如果我运行ll
后跟 c 程序打印的路径,它会返回我试图删除的文件。
我认为这可能是因为 fgets 将 '\0' 放在阻止删除工作的字符串的末尾。
我怎样才能解决这个问题?