HP Rp7410 BSD Sockets Interface Programmer's Guide - Page 145
signalSIGPIPE, SIG_IGN
View all HP Rp7410 manuals
Add to My Manuals
Save this manual to your list of manuals |
Page 145 highlights
Using UNIX Domain Stream Sockets Example Using UNIX Domain Stream Sockets /* * The SIGPIPE signal will be received if the peer has gone away * and an attempt is made to write data to the peer. Ignoring * the signal causes the write operation to receive an EPIPE error. * Thus, the user is informed about what happened. */ signal(SIGPIPE, SIG_IGN); setbuf(stdout, 0); setbuf(stderr, 0); if (argc < 2) { printf("usage: pitch Kbytes [pid]\n"); exit(0); } argv++; /* * Set up socket variables (address family; name of server socket) * (they'll be used later for the connect() call) */ sa.sun_family = AF_UNIX; strncpy(sa.sun_path, SOCKNAME, (sizeof(struct sockaddr_un) - sizeof(short))); bullet.bytes = bytes = 1024*atoi(*argv++); if (argc > 2) pid = atoi(*argv++); else pid = 0; sendsize = (bytes < BUFSIZE) ? bytes : BUFSIZE; /* * Create the client socket */ if ((s = socket( AF_UNIX, SOCK_STREAM, 0)) == -1) { perror("pitch - socket failed"); exit(0); } bufsize = BUFSIZE; /* * Change the default buffer size to improve throughput for * large data transfers */ if ((setsockopt(s, SOL_SOCKET, SO_SNDBUF, &bufsize, sizeof(bufsize))) == -1) { perror("pitch - setsockopt failed"); exit(0); } /* * Connect to the server */ if ((connect(s, &sa, sizeof(struct sockaddr_un))) == - 1) { perror("pitch - connect failed"); exit(0); } /* * send and receive the bullet to synchronize both sides */ send_data(s, &bullet, sizeof(struct bullet)); recv_data(s, &bullet, sizeof(struct bullet)); cc = 0; if (pid) kill(pid,SIGUSR1); Chapter 6 145