C语言socket编程如何处理SIGPIPE有关问题

C语言socket编程如何避免SIGPIPE问题
在socket编程的时候总是遇到SIGPIPE问题,感觉很不好解决

client 端:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <string.h>
#include <signal.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>




int main(int argc, const char * argv[])
{
    
    
    int pid_add, pid_fac;
    if ((pid_add=fork())==0)
    {// first child process---adder
        
        int r ;
        r = execl("./adder", "adder","executed by execl",(char *)NULL);
        if (r<0) {
            perror("error on execl");
        }
        
        
        return (0);
    }
    else
    {
        if ((pid_fac=fork())==0)
        {// second child process---factorial
//            int r ;
//            r = execl("./faco", "faco","executed by execl",(char *)NULL);
//            if (r<0) {
//                perror("error on execl");
//            }
//            
//            
//            return (0);
//
            
        }
        
        else
        {//parent process

            FILE *f1;
            int sockfd, portno, n;
            int sockfd2,portno2;
            struct sockaddr_in serv_addr_adder,serv_addr_fac;
             struct hostent *server, *server2;
    
             char buffer[256];
//             char name[256], ip[256], port[256];
//    
//             f1=fopen("config.dat", "r");
//    
//              rewind(f1);
//     
//              fscanf(f1, "%s%s%s",name,ip , port);
//               bzero(name, sizeof(name));
//               bzero(ip, sizeof(ip));
//                bzero(port, sizeof(port));
//                 fscanf(f1, "%s%s%s",name,ip , port);
    
//                 portno = atoi(port);
            portno=4000;

   
                sockfd = socket(AF_INET, SOCK_STREAM, 0);   //connect to the socket in adder
                if (sockfd < 0)
               perror("ERROR opening socket");
               server = gethostbyname("127.0.0.1");
                if (server == NULL)
                {
                       perror("no such host");