Eu estou tentando fazer um daemon simples para excluir continuamente arquivos de roxo / ícones (o diretório pidgin). No entanto, remove () e unlink () não estão excluindo arquivos. Aqui está o meu código, por favor, diga-me onde está o meu erro.
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>
#include <dirent.h>
#include <time.h>
int remove_files(const char* directory);
int remove_files(const char* directory) {
DIR *dp;
struct dirent *dirp;
int files_deleted = 0;
int count=0;
dp = opendir(directory);
while ( (dirp = readdir(dp)) != 0x00 ) {
files_deleted++;
remove(dirp->d_name);
}
closedir(dp);
return files_deleted;
}
int main(int argc, char *argv[]) {
time_t sec;
time(&sec);
//dir handlers
DIR *dp;
struct dirent *ep;
//
FILE *fp = 0x00;
pid_t process_id = 0;
pid_t sid = 0;
process_id = fork();
if ( process_id < 0 ) {
fprintf(stderr, "fork() failed \n");
exit(1);
} else if ( process_id > 0 ){
fprintf(stdout, "process_id of child process %d\n", process_id);
exit(0);
}
umask(0);
if ( (sid=setsid() ) < 0 ) {
exit(1);
}
chdir("/home/ilian/");
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
fp = fopen("Log.txt", "w+");
if ( fp == 0x00 ) exit(1);
fprintf(fp, "Started logging at %.24s \n", ctime(&sec));
fflush(fp);
while ( 1 ) {
fprintf(fp, "%d files deleted \n", remove_files("/home/ilian/.purple/icons/"));
fflush(fp);
sleep(10);
}
fclose(fp);
return (0);
} //END OF MAIN
Nada é excluído, mas o daemon está sendo executado. O log mostra quantos arquivos existem, mas os arquivos não foram tocados.