Specifications

Remote Procedure Call Programming Guide Page 3
2. Higher Layers of RPC
2.1. Highest Layer
Imagine you’re writing a program that needs to know how many users are logged into a remote machine.
You can do this by calling the RPC library routine rnusers() as illustrated below:
#include <stdio.h>
main(argc, argv)
int argc;
char **argv;
{
int num;
if (argc != 2) {
fprintf(stderr, "usage: rnusers hostname\n");
exit(1);
}
if ((num = rnusers(argv[1])) < 0) {
fprintf(stderr, "error: rnusers\n");
exit(-1);
}
printf("%d users on %s\n", num, argv[1]);
exit(0);
}
RPC library routines such as rnusers() are in the RPC services library librpcsvc.a Thus, the program above
should be compiled with
%ccprogram.c -lrpcsvc
rnusers(), like the other RPC library routines, is documented in section 3R of the System Interface Manual
for the Sun Workstation, the same section which documents the standard Sun RPC services. See the
intro(3R) manual page for an explanation of the documentation strategy for these services and their RPC
protocols.
Here are some of the RPC service library routines available to the C programmer:
Table 3-3 RPC Service Library Routines.TS
Routine Description
rnusers Return number of users on remote machine
rusers Return information about users on remote machine
havedisk Determine if remote machine has disk
rstats Get performance data from remote kernel
rwall Write to specified remote machines
yppasswd Update user password in Yellow Pages
Other RPC services — for example ether() mount rquota() and spray — are not available to the C program-
mer as library routines. They do, however, hav e RPC program numbers so they can be invoked with call-
rpc() which will be discussed in the next section. Most of them also have compilable rpcgen(1) protocol
description files. (The rpcgen protocol compiler radically simplifies the process of developing network
applications. See the rpcgen Programming Guide for detailed information about rpcgen and rpcgen proto-
col description files).