# rexec

## NAME



           rexec, rexec_af - return stream to a remote command
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <netdb.h>**
    
           **[[deprecated]]**
           **int rexec(char **restrict** _ahost_**, int** _inport_**,**
                     **const char *restrict** _user_**, const char *restrict** _passwd_**,**
                     **const char *restrict** _cmd_**, int *restrict** _fd2p_**);**
    
           **[[deprecated]]**
           **int rexec_af(char **restrict** _ahost_**, int** _inport_**,**
                     **const char *restrict** _user_**, const char *restrict** _passwd_**,**
                     **const char *restrict** _cmd_**, int *restrict** _fd2p_**,**
                     **sa_family_t** _af_**);**
    
           **rexec**(), **rexec_af**():
               Since glibc 2.19:
                   _DEFAULT_SOURCE
               In glibc up to and including 2.19:
                   _BSD_SOURCE
    


## DESCRIPTION



           This interface is obsoleted by rcmd(3).
    
           The **rexec**() function looks up the host _*ahost_ using
           gethostbyname(3), returning -1 if the host does not exist.
           Otherwise, _*ahost_ is set to the standard name of the host.  If a
           username and password are both specified, then these are used to
           authenticate to the foreign host; otherwise the environment and
           then the _.netrc_ file in user's home directory are searched for
           appropriate information.  If all this fails, the user is prompted
           for the information.
    
           The port _inport_ specifies which well-known DARPA Internet port to
           use for the connection; the call _getservbyname("exec", "tcp")_ (see
           getservent(3)) will return a pointer to a structure that contains
           the necessary port.  The protocol for connection is described in
           detail in **rexecd**(8).
    
           If the connection succeeds, a socket in the Internet domain of
           type **SOCK_STREAM** is returned to the caller, and given to the
           remote command as _stdin_ and _stdout_.  If _fd2p_ is nonzero, then an
           auxiliary channel to a control process will be setup, and a file
           descriptor for it will be placed in _*fd2p_.  The control process
           will return diagnostic output from the command (unit 2) on this
           channel, and will also accept bytes on this channel as being UNIX
           signal numbers, to be forwarded to the process group of the
           command.  The diagnostic information returned does not include
           remote authorization failure, as the secondary connection is set
           up after authorization has been verified.  If _fd2p_ is 0, then the
           _stderr_ (unit 2 of the remote command) will be made the same as the
           _stdout_ and no provision is made for sending arbitrary signals to
           the remote process, although you may be able to get its attention
           by using out-of-band data.
    
       **rexec_af()**
           The **rexec**() function works over IPv4 (**AF_INET**).  By contrast, the
           **rexec_af**() function provides an extra argument, _af_ , that allows
           the caller to select the protocol.  This argument can be specified
           as **AF_INET** , **AF_INET6** , or **AF_UNSPEC**(to allow the implementation to
           select the protocol).
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌────────────────────────────────────┬───────────────┬───────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├────────────────────────────────────┼───────────────┼───────────┤
           │ **rexec**(), **rexec_af**()                │ Thread safety │ MT-Unsafe │
           └────────────────────────────────────┴───────────────┴───────────┘
    


## STANDARDS



           None.
    


## BUGS



           The **rexec**() function sends the unencrypted password across the
           network.
    
           The underlying service is considered a big security hole and
           therefore not enabled on many sites; see **rexecd**(8) for
           explanations.
    


* * *