C语言socket编程如何处理SIGPIPE有关问题
C语言socket编程如何避免SIGPIPE问题
在socket编程的时候总是遇到SIGPIPE问题,感觉很不好解决
client 端:
在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");