Purpose
Indicates why a remote procedure call failed.
Library
C Library (libc.a)
Syntax
Description
The clnt_perror subroutine writes a message to standard error output indicating why a remote procedure call failed. The message is preceded by the string pointed to by the s parameter and a colon.
This subroutine is used after the clnt_call macro.
Parameters
| Item | Description | 
|---|---|
| clnt | Points to the structure of the client handle. | 
| s | Points to a character string that represents the error text. | 
Return Values
This subroutine returns an error string to standard error output.
Purpose
Indicates why a remote procedure call failed.
Library
Network Services Library (libnsl.a)
Syntax
Description
The clnt_perror subroutine writes a message to standard error output indicating why a remote procedure call failed. The message is preceded by the string pointed to by the s parameter and a colon. The message is appended by a newline. This subroutine is used after the clnt_call macro.
Parameters
| Item | Description | 
|---|---|
| clnt | Points to the structure of the client handle. | 
| s | Points to a character string that represents the error text. | 
Examples
In the following example, the clnt_perror subroutine displays the reason for failure of a remote procedure call.
#include <stdio.h>
#include <rpc/rpc.h>
int main()
{
  CLIENT *client ;
  char hostname[255] ; /* The Remote host on which server is implemented */
  rpcprog_t program_number = 0x3fffffffL;
  rpcvers_t version_number = 0x1L;
  rpcproc_t procedure_number = 0x1L;
  struct timeval total_timeout = { 25 , 0 } ;
  enum clnt_stat cs ;  
  /* Create client handle */
  client = clnt_create(hostname, program_number, version_number, "tcp");
  if (client == (CLIENT *)NULL)
  {
    fprintf(stderr,"Couldn't create client\n");
    exit(1);
  }
  /* Make a call to remote procedure associated with client handle */
  cs = clnt_call(client, procedure_number, (xdrproc_t)xdr_void, NULL,
                    (xdrproc_t)xdr_void, NULL, total_timeout);
  if (cs != RPC_SUCCESS)
  {
    clnt_perror(client,"Client Call failed");
    exit(1);
  }
  /* Destroy client handle in the end */
  clnt_destroy(client);
  return 0;
}