Probleme avec commande SYSTEM

toto -  
 toto -
Bonjour,

je suis débutant sous Linux et je suis en train d'écrire un programme sous Linux qui utilise la commande SYSTEM.

J'ai un gros souci, les commandes que je lance avec SYSTEM ont un comportement différent selon que je lance systeme("commande") ou que je crée une chaine de caractères qui contient commande et que j'appelle system(chaine) alors que le contenu est EXACTEMENT le même.

Dans le 2nd cas la commande réagit comme si elle tronquait la fin de ma chaine de caratères.

Connaissez vous ce souci?

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Tout d'abord, quelle distribution GNU/Linux utilises-tu ?
    C'est quoi cette commande "SYSTEM" ? (inconnue au bataillon sous Mandriva et Ubuntu !!!)

    Peux-tu nous donner des exemples concrets, s'il te plaît ? (comme nous coller les commandes et leurs résultats)

    ;-))
    0
  2. JacK
     
    Salut,

    Ton programme, il est écrit en quel langage ? (shell, C, perl...)
    0
  3. toto
     
    Salut,

    mon programme est en C, je suis sous Red Hat et la commande system permet de lancer une ligne de commande à partir d'un .c, moi je m'en sers pour faire des compressions/décompressions et recopie de fichiers.

    Dans les exs suivants je veux extraire un fichier kod/ml/m.so d'une archive dont je ne connais pas le nom.

    ex qui marche :

    system("/bin/tar xvzf ../../../u/comp/*tar.gz kod/ml/m.so");

    résultat : mon m.so est bien extrait

    affichage

    ex qui ne marche pas :

    memcpy(&cde[0],"/bin/tar xvzf ../../../u/comp/*tar.gz kod/ml",44);

    ptemp = strrchr((char *) Nom, 0x2F); (je récupère le nom de mon fichier en dynamique)

    memcpy(&cde[49],&Nom[ptemp-Nom],(strlen(Nom)-(ptemp-Nom)+1));

    system(cde);

    resultat : on me decompresse tous les fichiers du répertoire kod/ml de l'archive.

    Le truc bizarre est que si j'affiche les deux commandes elles sont identiques
    0