Fonction popen et system

Fermé
Freedon_Nadd Messages postés 2 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 12 octobre 2005 - 12 oct. 2005 à 22:19
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 - 13 oct. 2005 à 21:06
Bonjour,
je recherche des fonctions C sous unix qui font les meme chose que popen et system, si quelqu'un connait comment créer un fonction semblable a popen ou system, je suis ouvert a des suggestions.

Merci de votre aide

1 réponse

kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
12 oct. 2005 à 22:30
Salut,

Si tu ne veux pas utiliser popen ou system tu as aussi execve()
http://www.hmug.org/man/2/execve.php
0
Freedon_Nadd Messages postés 2 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 12 octobre 2005
12 oct. 2005 à 23:41
Merci de ta réponse, mais je comprends pas comment l'utliser, j'ai essayer de comprendre l'aide dans le lien que tu m'as envoyer, mais je comprends pas plus. Alors j'aimerais bien que tu m'aide. Ce que je veux faire et très simple. Je voudrais passer la commande "ls -l" a une fonction et celle-ci soit exécuter et bien sur sans utiliser popen ou system, qui me faciliterai bien la tache.

Merci d'avance
Freedon_Nadd
0
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
13 oct. 2005 à 21:06
Comme ceci:
#include <unistd.h>
int main()
{
	/* Déclarer un tableau de pointeurs char
           Sachant que tu as n arguments, la longueur de ton tableau
           doit être de n+2:
           _ Premier argument: le nom du programme
           _ ......
           _ Dernier argument: doit être NULL

           Exemple pour faire ls -l /home 
        */

        char *args[4]={"ls","-l","/home",NULL};
	const char *path="/bin/ls";
        execve(path,args,NULL); //Je laisse env à NULL....
	return 0;
}
0