Bonjour,
J'ai un souci avec l'utilisation de la command 'cp' utilisé à partir d'un programme C sous Unix et lancé via la command 'system'
Le contexte :
Je dois, dans le cadre d'un traitement itératif, copier un fichier squelette (ex : toto.pdf) sous un autre nom (incrémenté) (ex : toto.pdf[i] où i de 0 à n)
Extrait du code (remanié pour être plus clair) :
Mon problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ... sprintf ( tmp, "cp toto.pdf toto.pdf[i] >/dev/null\0"; if (system ( tmp ) == 0 ) { Trace(idtrace, "commande system OK"); } else { Trace(idtrace, "commande system KO"); } ...
Le traitement fonctionne bien pendant des jours (24h/24h ou presque) et des jours, et puis d'un seul coup, il dysfonctionne ... et se remet à marcher.
Après recherche, il s'avère que les fichiers toto.pdf[i] posant problème ont été créés à vide suite à la copie, d'où une erreur lors de la tentative de lecture (fopen) plus tard dans le traitement.
Mon unique piste est un problème de conflit entre la charge (itération très rapide) du traitement et la commande 'cp'
Quelqu'un saurait'il ce qui peut faire qu'une copie entraîne la création du fichier cible à vide ?
Quelqu'un aurait'il une (autre?) idée de piste ?
Merci d'avance
Partager