Passer une variable C en Shell avec un system() - C - Programmation
Marsh Posté le 19-02-2008 à 12:53:47
Houlala
1) Tu penses pouvoir stocker une chaine dans un int ?
2) %c c'est pour un caractère, pas pour une chaine.
3) n'utilise pas scanf. Utilise plutôt fgets.
4) system prend une seule chaine de caractère en argument. Dans ton cas ça serait pas exemple system("/user/sbin/useradd toto" ). Bien sûr il faudra que tu génère la chaine en fonction de ce qui a été saisi par l'utilisateur. Tu peux utiliser sprintf pour ça.
Marsh Posté le 19-02-2008 à 13:32:42
Ce sujet a été déplacé de la catégorie OS Alternatifs vers la categorie Programmation par Black_lord
Marsh Posté le 19-02-2008 à 13:37:46
Merci matafan, Peux tu m'expliquer comment sera la fonction avec un sprintf si j'ai pour utilisateur toto ?
Marsh Posté le 19-02-2008 à 13:50:24
man sprintf
Mais mieux vaut privilégier snprintf, qui permet de contrôler la taille du buffer de sortie.
Sinon, main() doit explicitement retourner un int, username2 ne contient qu'un seul caractère tel que tu l'as déclaré, et scanf() çaÿ le mal utilisé comme ici.
Quant à system(), derrière il fait un sh -c "le parametre que tu as passé à system()".
Donc tu peux tout à fait passer plusieurs commandes d'un coup au shell, séparées par des points-virgule, et donc définir une variable d'environnement avant de lancer une commande.
Exemple :
Code :
|
$ gcc -Wall -pedantic taiste.c |
Marsh Posté le 20-02-2008 à 20:33:49
Elmoricq a écrit :
|
Code :
|
Marsh Posté le 21-02-2008 à 07:03:52
C'est une private joke
Par contre ça me fait penser, pour le coup de la variable d'environnement, ça m'était sorti de l'esprit mais sur un environnement POSIX.2, c'est quand même plus simple d'utiliser putenv()
Marsh Posté le 21-02-2008 à 12:50:32
Elmoricq a écrit : C'est une private joke |
Il y avait des fautes dans le texte anglais...
Marsh Posté le 21-02-2008 à 13:08:44
C'est justement ça, la private joke, écrire "teh" au lieu de "the" (et its au lieu de it's).
Marsh Posté le 22-02-2008 à 02:39:55
Elmoricq a écrit : C'est justement ça, la private joke, écrire "teh" au lieu de "the" (et its au lieu de it's). |
Ah, je suis largué, je dois être trop vieux.
Marsh Posté le 19-02-2008 à 12:16:13
Bonjour,
Mon probléme est le suivant :
lorsque je compile j'ai l'erreur suivante :
Info : Je suis sous mandriva 2008
Merci d'avance
Message édité par So_H0use le 19-02-2008 à 13:38:56