Bonjour, j'aimerais executer une commande avec execv mais elle ne se fait pas. Pouvez-vous m'aider ? (ligne 46)
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<string.h>
#include <sys/signal.h>
int premier(int nb)
{
int r=0;
for(int i = 1 ; i <= nb ; i++ )
{
if(nb % i == 0)
{
r++;
}
}
if(r>2)
return 0;
else
return 1;
}
void my_system(char *path, char **argv)
{
execv(path, argv);
}
void explorer(int debut, int fin){
int etat,pid,pid2;
pid=fork();
if(pid==0){
for (int i=debut; i<=fin;i++){
if (premier(i)==1) {
pid2=fork();
fflush(stdout);
if (pid2==0){
char chaine[120];
sprintf(chaine,"echo ' %d est un nombre premier écrit par le processus system créé par %d qui est créé par %d'>>nbr_premiers.txt",i,getpid(), getppid());
char *cmd[] = {"bash", "-c", chaine, NULL};
my_system("bin/echo", cmd);
sleep(2);
exit(0);
}
else wait(&etat);
}
}
exit(0);
} else wait(&etat);
}
je vois que le chemin vers echo n'est pas complet.
mais, à quoi sert l'exécution de bash ? ne me dis pas que c'est seulement pour faire un affichage !
- Edité par dantonq 21 décembre 2022 à 16:08:45
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Problème avec execv()
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique