Transmission de descripteurs de fichiers (ou de sockets) ouverts d'un processus à un autre
Posted in 2006
Topics: Networking & sqlhosts Configuration
Translated from English by DrWatson — View original
Bonjour à tous, Il y a quelque temps, nous avons eu une discussion sur la possibilité de transmettre le descripteur d'un fichier ouvert (ou le descripteur d'un socket réseau ouvert) d'un processus UNIX à un autre. J'ai trouvé par hasard la réponse à cette question. UNIX SVR4 dispose de la méthode suivante pour le faire : le descripteur peut être transmis via un tube de flux (streams pipe), au moyen d'un appel ioctl avec la commande I_SENDFD. L'autre processus le reçoit grâce à l'appel ioctl I_RECVFD. Il semble que le moteur Informix utilise cette approche pour les connexions réseau : la demande de connexion ou de requête est reçue par le thread POLL qui s'exécute généralement sur NETVP, tandis que CPUVP envoie la réponse au client directement, en exécutant sendto() sur ce même socket réseau ouvert. ------------------------------------------ Alexey Sonkin
Alexey Sonkin a écrit : > Bonjour à tous, > > Il y a quelque temps, nous avons eu une discussion sur la possibilité > de transmettre le descripteur d'un fichier ouvert (ou le descripteur > d'une socket réseau ouverte) d'un processus UNIX à un autre. Alexey, Je ne me souviens pas de cette discussion. Seulement d'une portant sur la possibilité de partager un curseur de base de données entre des processus, et c'est une tout autre histoire. Art S. Kagel > J'ai trouvé par hasard la réponse à cette question. > UNIX SVR4 dispose de la méthode suivante pour le faire : le descripteur > peut être transmis via un tube de type streams, à l'aide d'un appel ioctl avec > la commande I_SENDFD. L'autre processus le reçoit grâce à > l'appel ioctl I_RECVFD. > > Il semble que le moteur Informix utilise cette approche pour > les connexions réseau : la demande de connexion ou de requête est > reçue par le thread POLL qui s'exécute habituellement > sur NETVP, tandis que CPUVP envoie la réponse au client > directement, en exécutant sendto() sur la même socket réseau ouverte. > > ------------------------------------------ > Alexey Sonkin > >
Alexey Sonkin a écrit : > Bonjour à tous, > > Il y a quelque temps, nous avons discuté de la possibilité > de transmettre le descripteur d'un fichier ouvert (ou le descripteur > d'une socket réseau ouverte) d'un processus UNIX à un autre. Alexey, Je ne me souviens pas de cette discussion. Seulement d'une portant sur la possibilité de partager un curseur de base de données entre processus, et c'est une tout autre histoire. Art S. Kagel > J'ai trouvé par hasard la réponse à cette question. > UNIX SVR4 dispose de la méthode suivante pour cela : le descripteur > peut être transmis via un tube streams, à l'aide d'un appel ioctl avec > la commande I_SENDFD. L'autre processus le reçoit grâce à > l'appel ioctl I_RECVFD. > > Il semble que le moteur Informix utilise cette approche pour > les connexions réseau : la demande de connexion ou de requête est > reçue par le thread POLL qui s'exécute habituellement > sur NETVP, tandis que CPUVP envoie la réponse au client > directement, en exécutant sendto() sur la même socket réseau ouverte. > > ------------------------------------------ > Alexey Sonkin > >