J'ai n fichiers et mon programme doit fusionner le contenu de tous dans un fichier en utilisant les threads et les fichiers temporaires (utiliser tmpfile()). Lors de la création d'un thread, il doit fusionner 2 fichiers dans un fichier temporaire (temp1) puis un autre thread fusionnera les 2 fichiers suivants dans un autre fichier temporaire (temp2) et ainsi de suite, puis au prochain niveau un autre thread fusionnera temp1 avec temp2 un autre fichier temporaire.C: fusion de fichiers temporaires créés avec la fonction tmpfile() avec multithreading
Je pensais à la création d'un tableau de noms de fichiers en passant à pthread_create comme argument, et la fonction doit retourner le tableau trop modifié, mais je ne peux pas comprendre comment obtenir le nom de tempfile. Est-ce que quelque chose comme ceci:
int main(int argc, char *argv[]){
int n = argc -1;
char *files_arr[n];
pthread_t threads[n-1];
}
for (int i=0; i < argc; i++)
{
pthread_create (&threads[i], NULL, temp_merge, (void *) &files_arr);
}
}//end main
void *temp_merge (void *arg){
char *myarray[];
myarray = (char *) arg;
FILE *f1, *f2, *tf;
tf = tmpfile();
//code to merge f1 and f2 into tf, f1 and f2 could be temp files created before
pthread_exit((void*) myarray); //Do I lose the temp file using pthread_exit?
}
La question est: Comment puis-je accéder à un fichier temporaire openned avant avec tmp() dans un thread précédent pour générer de nouveaux fichiers temporaires?
"Je n'arrive pas à comprendre comment obtenir le nom du fichier temporaire." - Vous ne pouvez pas, en général C'est le point de tmpfile –
C'est vrai Paul, alors comment puis-je "stocker" ces fichiers temporaires pour les lire plus tard? – g0d1anier
créer un tableau de noms enregistrés. après chaque étape, fusionnez ces fichiers dans les nouveaux fichiers (en les sauvegardant au fur et à mesure). le mot "récursif" vient à l'esprit ici;) – KevinDTimm