Redirection '>' plus read
Bonjour, je suis actuellement sur un projet scolaire,
Le principe de base est de recree un minishell, je n'attend pas de reponse sous forme de code mais je ne vois pas comment bien gerer mes fork...
je vous explique rapidement, je dois par example executer un ls avec execve ce qui dois me donner
$> ls
main.c prim.c toto.c etc...
$>
Voila a noter que le $> est le prompte de mon shell perso ce qui veux dire que apres l'execution de execve je revien dans mon programe.
je sais comment cree un fichier si il est inexistant et lui attribuer des droit ainsi que ecrire a l'interieur. Mais mon soucis principale ne reside pas la de dans.
je dois en effet utiliser les redirections tel que > ou <.
si je remprend mon example precedent mais cette fois avec la redirection droite ce qui a pour but d'ecrire a "l'interieur" de mon fd
$> ls > toto
main.c etc....
$>
je dois faire n'importe quoi, mais le seul resultat que j'obtien c'est la creation de mon fichier si il est inexistant.
Donc, je fork deux fois, une fois pour executer le execve, et une autre fois pour lire sur le fd 0.
mais la lecture ne ce fais pas surment a cause de mon wait...
voila une partie de mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| if ((pid = fork()) < 0)
aff_err("fork");
if (pid)
{
int status;
wait(&status);
return (0);
}
else
{
com = more_fork(com, shell);
execve(str, com, env);
}
return (0); |
dans la fonction more_fork, je regarde si il y a un caractere '>' dans la ligne saisie par l'utilisateur. si c'est bien le cas je coupe la chaine en deux ls -la envoier a la commande execve puis je fork, et je recupere le nom du fichier apres ls -la > toto, et je fork, ensuite je fais des read en boucle sur le fd(0) que je recris dans le int fd(toto).
je pensse que je dois me planter dans mes fork, si vous penssez que mon pb vien d'ailleur je suis ouvert a toutes critiques :)
Merci