fichier vide après command cp (unix)
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) :
Code:
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");
}
... |
Mon problème
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
command system cp ko suite
Bonjour,
Merci tout d'abord pour vos réponses.
Désolé du retard, j'ai du mettre ce sujet (qui reste d'actualité) en suspens pendant quelques temps (et je n'ai pas reçu d'alerte).
Mes réponses aux remarques qui m'ont été faites :
- la rapport avec le C : le programme est en C/Unix et a besoin de performance. L'appel à des commandes system à partir d'un programme C ne devrait pas poser de problème. Cela n'en pose d'ailleurs pas lorsque la machine où tourne le programme n'est pas surchargé (99% des cas à la louche).
- le fichier est monté en JFS2 (serveur local de production)
- pourquoi une commande system : la fonction 'cp' est sensée copier nativement un fichier vers un autre. Pourquoi en redévelopper une autre ? j'ai besoin de performance et de fiabilité. Mais je reste ouvert à toute proposition.