Я пытаюсь создать 5000 ненужных файлов, записать их в файл и удалить их. Но этот код только записывает часть файлов в файл. ls -l | grep ^ - | wc -l говорит, что в каталоге осталось 1598 файлов, которые должны быть очищены с помощью unlink () ;. Если я удаляю close (fd), я получаю ошибку seg, если я делаю больше 1000 файлов. Есть предложения?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
main (int argv, char *args[]){
if(argv<3){
printf("Please run with proper command line arguements.\n");
return;
}
int numFiles = atoi(args[1]);
char *fileName = args[2];
char *fileList[numFiles];
int x, ret,fd;
char buff[50];
for(x=0;x<numFiles;x++){
ret = sprintf(buff,"./stuff/%s-%d.junk",fileName, x);
fd = creat(buff);
close(fd);
}
DIR *odir = opendir("./stuff");
struct dirent *rdir = NULL;
FILE *fp;
fp = fopen("./files.list", "w");
x=0;
while(rdir = readdir(odir)){
char* name = rdir->d_name;
ret = sprintf(buff,"./stuff/%s-%d.junk",fileName, x);
if(strcmp(name,"..")!=0){
if(strcmp(name,".")!=0){
fprintf(fp,"%s %d\n",name,x);
x++;
}
}
unlink(buff);
}
close(fp);
closedir(odir);
}
Спасибо! * * 1004
Примечание. Для выполнения задания требовалось использовать creat (), opendir (), readdir () и unlink (). А что касается проверки на ошибки, ваше право, конечно, но я нахожусь под временным ограничением, и ТП действительно, действительно, все равно ... Но спасибо всем!