Bonjour,
Je développe sous linux avec gcc et je voudrai savoir comment dans un programme en c on peut executer une commande shell
( ici "/etc/init.d/samba reload" ) .
Merci
Bonjour,
Je développe sous linux avec gcc et je voudrai savoir comment dans un programme en c on peut executer une commande shell
( ici "/etc/init.d/samba reload" ) .
Merci
Avec la fonction system(), définie dans stdlib.h. Elle appelle un shell, donc tu peux exécuter directement des commandes internes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part system("/etc/init.d/samba reload");
Tu as deux solutions a ton problème mais celle qu'a donné anomaly est incontestablement la plus simple a éxecuter:
- 1)
Solution d'anomaly. L'inconvénient de celle ci , si on peut dire que c'est un inconvénient est qu'il y a éxécution d'un nouveau bash et que ce n'est pas nécessaire. En cours on me disait toujours de bannir l'appel systeme system
Code : Sélectionner tout - Visualiser dans une fenêtre à part int system(const char* commande);
- 2)
L'autre solution est dupliquer ton processus et de recouvrir le fils
explication:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <unistd.h> #include <stdlib.h> int nPid=fork(); switch(nPid) { case 0: { /* On est dans le processus fils on recouvre */ execlp("ligne de commande", "argument"); /* Dans ce cas tu utilises un appel systeme dérivée d'execve qui execlp dont le prototype est : int execlp(const char* application, const char* arg); il faut d'ailleurs ne pas oublier que argv[0]=application sinon ca marche pas!! */ } default: { /* On est dans le processus pere*/ wait(NULL); /* On attend que le fils ait terminé l'execution */ } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager