Creation d'un shell probleme avec execve
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:
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:
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