Cette interface est rendue obsolète par
rcmd(3).
La fonction
rexec()
cherche l'hôte
*ahost
en utilisant
gethostbyname(3).
Elle renvoie -1 si l'hôte n'existe pas.
Autrement,
*ahost
est configuré avec le nom standard de l'hôte.
Si un nom d'utilisateur et un mot de passe sont également spécifiés,
ils sont utilisés pour s'authentifier sur l'hôte ;
autrement, on cherche les informations appropriées
dans l'environnement puis dans le fichier
.netrc
de l'utilisateur situé dans le répertoire personnel.
Si cela échoue, on demande l'information à l'utilisateur.
Le port
inport
spécifie quel port Internet DARPA
sera utilisé pour la connexion ; l'appel
getservbyname(exec, tcp)
(voir
getservent(3))
renverra un pointeur sur une structure qui contient le port nécessaire.
Le protocole de la connexion est décrit en détails dans
rexecd(8).
Si la connexion réussit, une socket dans le domaine Internet de type
SOCK_STREAM
est renvoyée à l'appelant et est fournie à la commande distante comme
stdin
et
stdout.
Si
fd2p
est non nul, un canal auxilliaire sur un processus de contrôle
sera configuré et un descripteur de celui-ci sera placé dans
*fd2p.
Le processus de contrôle renverra une sortie de diagnostic de la commande
(unité 2) sur ce canal et acceptera les octets sur ce même canal
comme étant des numéros de signaux Unix
à transmettre au groupe du processus de la commande.
L'information de diagnostic n'inclut pas l'échec d'autorisation distante.
Une connexion secondaire est configurée
après que l'autorisation ait été vérifiée.
Si
fd2p
est 0,
stderr
(unité 2 de la commande distante)
sera la même que
stdout
et aucun canal supplémentaire ne sera utilisé pour envoyer des signaux
arbitraires au processus distant, bien qu'il soit possible d'obtenir
son attention en transmettant des données supplémentaires.