Bonjour

Je suis en train de creer un shell et le comportement d'execve me parait anormal.

exec[0] contient le path, exemple : "/bin/ls"
les autres cases contiennent les parametre (-l -r ...)
error m'affiche un "A" a chaque erreur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
      pid = fork();
      if (pid == 0)
        {
          if (execve(exec[0], exec, envp) == -1)
            error(exec);
          pid = getpid();
          kill(pid, SIGTERM);
        }
      else
        wait(0);
apres execution :
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
 
$> ls
a.out main.c exec.c
$> ls -r
exec.c main.c a.out
A
$> ls
a.out main.c exec.c
$> ls -l -r
A
A
A
$> ls
A
&>
je ne comprend pas pourquoi j'ai une erreur si je passe un parametre, pourquoi rien ne marche avec plus d'un parametre et surtout pourquoi execve ne fonctionne plus apres ca bien que je kill le pross apres l'echeque.

merci pour toute explications