Voyant un comportement étrange, en se connectant à la base de données Oracle, puis en appelant la fonction externe, la valeur de $? est toujours -1.
La machine à problèmes fonctionne sous AIX5.3 standard, avec DBD :: Oracle 1.20 et DBI 1.602.DBD :: Oracle entraînant une corruption des appels système?
#!/usr/bin/perl -w
use DBI;
CORE::system "pwd";
print "Before connect: $?\n";
DBI->connect('dbi:Oracle:', 'pwd', 'pwd');
print "Before system: $?\n";
CORE::system "pwd";
print "After system: $?\n";
CORE::system "pwd";
print "After system: $?\n";
Before connect: 0
Before system: 0
/usr/local/bin
After system: -1
/usr/local/bin
After system: -1
Ce sont les résultats d'une autre machine à AIX 5.3, la seule différence que je vois est qu'il est en cours d'exécution DBD: Oracle 1,22 et 1,607 DBI. Cependant en regardant les journaux de changement pour ces modules, je ne vois rien qui puisse se rapporter à cela. Toutes les idées pour d'autres choses que je peux essayer autre que la mise à niveau de DBD: Oracle et DBI (hésitent à le faire tout de suite car il s'agit d'une machine de production).
Donne la sortie suivante: /usr/local/bin l'appel système a échoué: il y a aucun processus enfant. à la ligne ./test.pl 7. Notez que la commande pwd proprement dite est terminée (sortie/usr/local/bin). – Patrick
Basé sur ce message d'erreur, trouvé le lien suivant, semble être le même comportement: http://rt.cpan.org/Public/Bug/Display.html?id=16548 – Patrick
Basé sur l'un des commentaires là-bas , J'ai ajouté ce qui suit après la connexion: $ SIG {CHLD} = 'DEFAULT'; Cela semble résoudre (ou contourner le problème), merci pour les informations sur la façon d'obtenir le message d'erreur supplémentaire. – Patrick