Bonjour,
Je cherche à rédiger un programme qui imprime son PID, puis se lance lui-même au moyen d'une fonction "exec" (execl(), execlp(), execv(), execvp(), ...)
Quelqu'un pourrait-il m'aider à résoudre ce problème?
Merci par avance. 8)
Bonjour,
Je cherche à rédiger un programme qui imprime son PID, puis se lance lui-même au moyen d'une fonction "exec" (execl(), execlp(), execv(), execvp(), ...)
Quelqu'un pourrait-il m'aider à résoudre ce problème?
Merci par avance. 8)
Comme ça, là, non.
Sur quoi bloques-tu précisement ?
Bah en fait, j'ai essayé de le faire, mais j'ai quelques petites erreurs lors de l'execution de mon programme...
Deux erreurs reviennent:
- bad address
- permission denied
Je pense que ça vient de ma façon d'utiliser execl, qui ne doit pas être très bonne...![]()
Merci et à bientôt! 8)
Si on avait le code ca serait bien quand meme
Désolé, j'ai pas été vif... Voici le code:
Merci et à bientôt!
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
29
30
31
32 /* Nom du fichier source: autoExec.c */ #include <stdio.h> #include <sys/types.h> #include <unistd.h> #define NB_EXEC 5 int main(int argc, char *argv[]) { int nbExecRest; pid_t pid; if(argc==1) { nbExecRest=NB_EXEC; } else { nbExecRest=atoi(argv[1]); } printf("le PID de ce processus est %d et il reste %d executions de ce programme", getpid(), nbExecRest); if(nbExecRest != 0) { nbExecRest--; execlp("./autoExec", "./autoExec", nbExecRest, NULL); perror("execlp"); } printf("fin de l execution"); return 0; }
les arguments de execl sont des char *, donc tu dois convertir nbExecRest en char * . Pour convertir :
ensuite met fflush(stdout) apres le printf pour etre sur de voir tes messages.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char s[40]; sprintf(s, "%d", nbExecRest);
enfin execlp recherche l'executable dans le PATH, pour le repertoire courant, execl("autoExec",...) suffit.
là ça devrait macher...
aussii, atoi() à besoin de stdlib.h
Ce qui se fait en generale c'est un fichier de script (.bat sous win et en Bash sous Linux) ! apres suffit de dire au système de lancer ce script au démarrage du gestionnaire de fenetre pis c'est bon, pas besoin d'un programme executable
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