Likewise, xv_init() creates a server instance, so you cannot establish the initial server
after calling xv_init().
15.3.2 Connecting to Multiple Servers
You can establish connections to other servers as well as the server opened by xv_init()
by using xv_create() in the way shown above. The standard way for a user to specify a
connection to a server is the -display switch; to allow the user to specify a connection to
another server, you should provide an additional command-line option that you parse your-
self.
The following code segment allows the user to specify an additional server by using the com-
mand-line switch -display2:
Xv_Server server1, server2 = NULL;
server1 = xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
/* XView has parsed all the args it knows -- now look for ours */
while (*++argv) {
if (!strcmp(*argv, "-display2")) {
if (!*++argv) {
fputs("Missing server name.\n", stderr);
exit(1);
}
server2 = xv_create(NULL, SERVER, XV_NAME, *argv, NULL);
}
}
if (server2 == NULL) {
fputs("Must specify second server.\n", stderr);
exit(1);
}
If you do this, a connection will be established for both servers.
Applications that have connected to multiple servers will typically exit when one of the X
servers goes down, causing the windows displayed on the other server to go away. To avoid
having the application exit, application programmers should consider forking separate
processes for each server connection. Thus losing a server connection can be handled in a
reasonable manner.
15.3.3 Getting the Server ...