Processus en background et job control ! [Developpement linux] - C - Programmation
Marsh Posté le 02-01-2006 à 00:17:33
A mon avis tu as surtout un probleme de conception. L'interet d'avoir a ecrire un shell c'est de savoir trouver l'information et comprendre les concepts de la programation Unix. Je vais te donner de quoi continuer tes recherches sur internet :
- As-tu termine ta Line discipline ?
- Et pour le Process Group Management ?
Bonne chance
PS : Pourquoi faire quelque chose quand le systeme peut le faire pour toi ?
Marsh Posté le 02-01-2006 à 03:47:24
Je me demande bien quelle est ta formation pour avoir un shell a faire
Marsh Posté le 02-01-2006 à 15:23:29
Dion a écrit : Je me demande bien quelle est ta formation pour avoir un shell a faire |
C'est les gens cools qui ecrivent des shell, et encore plus quand ils le codent avec un clavier mappe en Dvorak
Marsh Posté le 31-12-2005 à 00:04:59
Salut tout le monde !
Apres avoir fait pas mal de recherches sur internet, je me permet de poster ici 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,
c'est en fait un programme lancé a partir d'un shell et qui doit gerer qq fonctionnalités des shells , sans faire appel a la fonction system() bien entendu
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, le man des shells bash et tcsh ne disent rien a ce sujet ...
J'ai aussi essayé d'intercepter les signaux SIGTTIN et SIGCHLD en vain ... cette saleté de processus meurt et je ne comprends pas pourquoi !
En fait je cherche juste un moyen de savoir si un processus donné tente un acces au terminal en lecture , et si c le cas pouvoir l'en empecher
Si qqn a une solution a proposer, ce serait vraiment sympa car je ne sais plus quoi faire ! Merci d'avance