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