Salut tout le monde !
Apres avoir fait pas mal de recherches sur internet, je me permet de poster sur votre superbe forum pour demander de l'aide !
Voici mon probleme :
Je suis en train de programmer en C/C++ un shell, qui doit se comporter a peu pres comme un shell unix classique.
Pour l'instant tout allait bien mais je suis tombé sur un os : la mise en place du job control.
Je dois donc gerer le lancement en background de processus, malheuresement apres de longs et infructueux essais , j'en suis au meme point !
Lorsqu'un processus lancé en background demande l'acces en lecture au shell , il doit passer en "Suspended" . Et c la que je coince, comment faire ?
J'ai essayé de faire un dup2() de son entree standard sur /dev/null ou sur un pipe que lui seul utilise et le resultat est le meme : apres l'appel a execve(), le processus meurt . J'ai bien essayé de voir pourquoi en controlant les macros de waitpid() mais rien d'anormal.
J'ai aussi essayé de chercher des explications pour savoir comment les vrais shell font mais je n'ai rien trouvé non plus !![]()
J'ai aussi essayé d'intercepter les signaux SIGTTIN et SIGCHLD en vain ... cette saleté de processus meurt et je ne comprends pas pourquoi !
Si qqn aurait une solution a proposer, ce serait vraiment sympa car je ne sais plus quoi faire ! Merci d'avance![]()
Partager