Bonjour,
j'ai développé une petite dll (je suis sous windows) dont j'importe les éléments fonctionnels un à un dans des fonctions C sous postgre. Tout fonctionne très bien pour le moment mais j'ai un soucis lors des appels de commandes système faits par certains des éléments fonctionnels de ma dll.
Ainsi un des éléments fonctionnels de ma dll (importé dans une fonction C sous postgre) est définit ainsi :
1 2 3 4 5 6 7 8 9 10 11 12
| PG_FUNCTION_INFO_V1(restruct_voie);
DLLIMPORT Datum restruct_voie(PG_FUNCTION_ARGS)
{
system("cd ./RestructVoie");
system("mkdir rep_test_systeme");
system("My_RestructVoie.BAT");;
system("cd ..");
PG_RETURN_NULL();
} |
Par défaut je suis dans le répertoire data de postgre; répertoire dans lequel j'ai créé un sous répertoire RestructVoie.
J'attends que le prog 'se déplace' dans 'RestructVoie' puis lance le fichier 'My_RestructVoie' avant de revenir à la racine.
Pour débugger et savoir ou je suis à un instant donné je crée un répertoire de test : 'rep_test_systeme'.
Mon problème est que la commande cd ne fonctionne pas (comme je l'attends) car quoi que je fasse le répertoire 'rep_test_systeme' (que je crée afin de débugger mon programme) est créé à la racine du répertoire 'data' de postgre. Ce qui signifie bien que ma commande "cd ./RestructVoie" ou encore "cd RestructVoie" n'a pas été prise en compte comme je le désire.
J'ai déjà vu des notes concernant des subtilité dans le mécanisme associé à la commande 'cd' mais je ne les retrouve pas.
Quelqu'un aurait-il la solution ?
Merci pour votre lecture !
Partager