#include <netdb.h> /* Ou <unistd.h> sur certains systèmes */
int rcmd(char **restrict ahost, unsigned short inport,
const char *restrict locuser,
const char *restrict remuser,
const char *restrict cmd, int *restrict fd2p);
int rresvport(int *port);
int iruserok(uint32_t raddr, int superuser,
const char *ruser, const char *luser);
int ruserok(const char *rhost, int superuser,
const char *ruser, const char *luser);
int rcmd_af(char **restrict ahost, unsigned short inport,
const char *restrict locuser,
const char *restrict remuser,
const char *restrict cmd, int *restrict fd2p,
sa_family_t af);
int rresvport_af(int *port, sa_family_t af);
int iruserok_af(const void *restrict raddr, int superuser,
const char *restrict ruser, const char *restrict luser,
sa_family_t af);
int ruserok_af(const char *rhost, int superuser,
const char *ruser, const char *luser,
sa_family_t af);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
rcmd(), rcmd_af(), rresvport(), rresvport_af(), iruserok(), iruserok_af(), ruserok(), ruserok_af() :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE
Si la connexion réussit, un socket dans le domaine Internet de type SOCK_STREAM est renvoyé à l'appelant et est fourni à la commande distante en guise de stdin et stdout. Si fd2p est différent de zéro, un canal auxiliaire est créé pour un processus de contrôle, et son descripteur placé dans *fd2p. Le processus de contrôle renverra les sorties de sera diagnostic (numéro 2) sur ce canal, et acceptera également des octets qu'il considérera comme des numéros de signal UNIX à envoyer au groupe de processus de la commande. Si fd2p est 0, alors stderr (sortie numéro 2 de la commande distante) sera renvoyée sur stdout et rien n'est prévu pour l'envoi de signaux arbitraires au processus distant, bien que vous puissiez y parvenir en utilisant des données hors-bande.
Le protocole est décrit en détail dans rshd(8).
Si ce fichier n'existe pas, s'il ne s'agit pas d'un fichier ordinaire, s'il appartient à quelqu'un d'autre que l'utilisateur local ou le superutilisateur, ou encore s'il est accessible en écriture par quelqu'un d'autre que son propriétaire, le test échoue automatiquement. Si la machine est listée dans le fichier hosts.equiv, ou si les noms d'hôte et d'utilisateur distants sont trouvés dans le fichier .rhosts, iruserok() et ruserok() renvoient zéro. Sinon elles renvoient -1. Si le domaine local (obtenu par l'intermédiaire de gethostname(2)) est le même que le domaine distant, seul le nom de machine a besoin d'être indiqué.
Si l'adresse IP de l'hôte distant est connue, iruserok() sera préférée à ruserok(), car elle ne nécessite pas d'avoir un serveur DNS digne de confiance pour le domaine distant.
La fonction rresvport() renvoie un descripteur de socket valable, attaché à une adresse privilégiée si elle réussit. Elle renvoie -1 sinon, et errno contient le code d'erreur. Le code d'erreur EAGAIN signifie en réalité « Tous les ports réseau sont déjà utilisés ».
Voir ci-dessus pour des renseignements sur les valeurs renvoyées par ruserok() et iruserok().
| Interface | Attribut | Valeur |
| rcmd(), rcmd_af() | Sécurité des threads | MT-Unsafe |
| rresvport(), rresvport_af() | Sécurité des threads | MT-Safe |
| iruserok(), ruserok(), iruserok_af(), ruserok_af() | Sécurité des threads | MT-Safe locale |
Solaris, 4.2BSD. Les variantes « _af » sont des ajouts plus récents et ne sont pas présentes sur de nombreux systèmes.
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à