Plus précisément : si tu fais eexec (un_prog_qui_appelle_ngetch_ou_kbhit), alors on peut lancer un nouveau shell depuis ce programme, et relancer eexec. Ok, c'est tordu, mais faut bien prévoir ça.
De la même manière que sous PedroM, si t'utilises ngetchx/kbhit, faut s'attendre à ce que tes handles puissent bouger. Faut aussi vérifier si un handle est locké avant de le locker toi-même, pour ne pas le délocker si un autre process l'utilise... et que t'as un peu de chance quand même. ^^
Parce que le coup des handles lockés peut amener un cas bien foireux :
- le programme A démarre, regarde le handle H et voit qu'il n'est pas locké, il le lock et l'utilise
- le programme B démarre, voit que le handle H est locké, et retient ce fait
- le programme A s'arrête, en délockant en toute bonne foi H pour le remettre comme il l'avait trouvé
- puis B crash tranquillement, parce que H n'était pas censé bouger. A moins qu'il ait la chance de quitter en laissant soi-disant locké un programme déjà délocké.
Je sais pas si ya moyen d'éviter ça. En tout cas, je fais maintenant des HeapGetLock en serrant les fesses pour que les programmes soient fermés en FILO.

La seule solution serait que chaque programme ne lock rien, refasse des deref après ses ngetchx/kbhit, mais ça dois pas exister ^^