-
duplication de socket
J'ai un process A qui est en écoute sur un port TCP.
Lorsqu'un client se connecte, A fork() et le fils duplique la socket sur stdin et stdout (avec dup2). Puis le fils fait un 'execlp' qui lancera un autre programme qui fera des lectures/ecriture sur stdin/stdout.
Ce comportement fonctionne parfaitement sous Unix ?
Comment faire la même chose sous Windows ?
Sous Windows en C comment peut-on dupliquer une socket sur l'entree standard et la sortie standard ?
-
Eh bien, oui c'est parfaitement possible:- En utilisant CreateProcess(), tu peux passer au programme fils des handles qui remplaceront ses handles standard (in, out et err). La seule condition pour que ça marche, c'est que les handles en question doivent être héritables.
- Un handle héritable peut être créé à partir d'un handle non-héritable grâce à la fonction DuplicateHandle().
- Les sockets sont des handles: DuplicateHandle() marche parfaitement avec des sockets (il faut juste un typecast). Je suppose que les sockets ne sont pas héritables à la base, donc le DuplicateHandle() devrait être nécessaire.