Alternative au printf pour une fonction.

Résolu/Fermé
glupidon - 19 févr. 2015 à 10:48
 glupidon - 27 févr. 2015 à 11:37
Bonjour,

c'est de nouveau moi avec de nouveau une question bien tiré par les cheveux !

je cherche à créé une fonction qui exécutera des commande Linux tel que "pwd", "ls", "cd" ...

pour ce faire j'ai une fonction qui stocke dans une chaine de caractères (str) la commande à exécuter et je voudrais que la fonction ci-dessous se charge de l'exécuter.


int execut(char *str)
{
size_t size;
int status;
pid_t f;

my_putstr(str);
if ((read[strlen(str)-1] = '\0') <= 0)
{
my_putstr("error whith read in execut\n");
exit (1);
}
printf("%s\n" , read);
if((f = fork()) == 0)
{
execvp(read , &read);
exit(0);
}
else
wait(&status);
}


donc la c'est bien beau tout ça, mais le problème est là justement ...

je voudrais remplacer le printf par autre chose .

(je ne dois pas utilisé printf )

j'attends vos idées et conseilles avec impatiente ;-) !

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
19 févr. 2015 à 18:27
Bonjour,

printf() n'est pas une commande linux. Tu confirmes que tu ne dois quand même pas l'utiliser ?
Si oui, tu peux utiliser write pour écrire sur la sortie standard.
0
bonjour,
je confirme , pas de printf() !

ton idée concernant write() me plait bien, mais je ne vois pas trop comment faire pour que ce qui soit tapé au clavier soit intégré à ma chaine de caractère ...

tu peux me laisser un exemple ?

je pense se serait même super comme technique !

impatient de voir ce que ça donne
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
20 févr. 2015 à 10:52
Pardon de faire irruption dans votre échange, mais quelque chose me dit que la fonction my_putstr que tu utilises pour afficher la chaîne de caractères "error whith read in execut\n" doit utiliser cette même technique.

dans ton code le seul printf est celui-ci
printf("%s\n" , read);
et il affiche une chaîne de caractères

ton code ne permet pas de savoir exactement ce qu'il y a dans read, mais le code de my_putstr n'est-il pas adapté pour faire cela ?

Dal
0
Bonjour [Dal]

le my_putstr() etait la pour m'aider lors de mon codage mais j'ai oublier de le retiré donc il ne faut pas le compter comme appartenant a ma fonction enfaite ...
merci de me le faire remarqué !

je cherche pas a afficher enfaite , je voudrais que ce que je tape au clavier soit direct stocker dans une string .
0