Broken Pipe problem in Socket Programming


 
Thread Tools Search this Thread
Top Forums Programming Broken Pipe problem in Socket Programming
# 1  
Old 07-14-2011
Broken Pipe problem in Socket Programming

Dear all,

I am making a multithreaded server using socket programming in c .. i'd discovered that when the client closes the connection and the server is still sending him a stream of bytes the server crashed with a BROKEN PIPE problem.
I can easily make the client notify the server before closing and solve the problem. but this is not a practical solution. what if someone implemented my protocol on his own client but did not notify the server ? probably he will crash my server easily.
Also i can easily solve the problem by making each client in a process not in a thread. but this will not be a scalable solution. it will take more memory and slower processing.
how can i solve this problem then ?

Note that i had tested the server on localhost. may this problem be solved if i tested it on a remove server ?

Thanks in advance ..
# 2  
Old 07-14-2011
If you don't want your program to be killed by SIGPIPE, just ignore it.
Code:
#include <signal.h>

...

signal(SIGPIPE, SIG_IGN);

Then you'll start getting write() errors instead of being killed.

SIGPIPE is designed for situations like this:

Code:
cat reallylongfile | head

head prints the first 10 lines and quits, closing its half of the pipe. With it gone, there's no further reason for cat to continue existing. cat tries to write to the broken pipe, and gets cleanly knocked out by SIGPIPE instead of freaking out with write errors.

Last edited by Corona688; 07-14-2011 at 02:47 PM.. Reason: socket.h should be signal.h
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 07-14-2011
It worked !!

Thanks Very Much Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Broken pipe

Hi all, I am trying to run a sleep command and I am receiving a broken pipe when I execute. any help would be greatly appreciated. sleep `< /dev/urandom tr -dc 0-6 | head -c2` (2 Replies)
Discussion started by: gartie
2 Replies

2. UNIX for Dummies Questions & Answers

broken pipe

I know what causes 'broken pipe' errors, but I can't understand why I can get it (only occasionally) with my example: ps -ef | grep "\./ans$" | grep -v grep Basically I'm searching the ps output looking for the process I'm interested in and excluding the process that is grepping for the... (2 Replies)
Discussion started by: fhew
2 Replies

3. Shell Programming and Scripting

Replace pipe with Broken Pipe

Hi All , Is there any way to replace the pipe ( | ) with the broken pipe (0xA6) in unix (1 Reply)
Discussion started by: saj
1 Replies

4. Shell Programming and Scripting

broken pipe

hi i am trying to upload a file using ftp protocol, i am facing some problem while uploading "Failedtoupload:SFTREGUP1:FTP_ASCII_MAILBOX21.39.10.856305000:Broken pipe" Can someone explain why it is coming , and the solution . (0 Replies)
Discussion started by: Satyak
0 Replies

5. UNIX and Linux Applications

pipe broken

hi i have a server, and i have a web site and i installed apache in the /usr/local/apache/logs i have a file and i have this problem (32)Broken pipe: core_output_filter: writing data to the network plz help me how i can resolve this plz it's urgent th (1 Reply)
Discussion started by: abir2
1 Replies

6. UNIX for Dummies Questions & Answers

Broken Pipe

Hi I tried to open the man page of sh and piped to `pg`. Normally while reading a file page by page using `pg`, if we wanna quit at the middle of file, we give "q" near the colon mode. Ex1: $cat file1 | pg hi how r u : (page1) now press "return key", it will go to next page yes i ... (3 Replies)
Discussion started by: ramkrix
3 Replies

7. UNIX for Advanced & Expert Users

Broken Pipe

Hi I tried to open the man page of sh and piped to `pg`. Normally while reading a file page by page using `pg`, if we wanna quit at the middle of file, we give "q" near the colon mode. Ex1: $cat file1 | pg hi how r u : (page1) now press "return key", it will go to next page yes i ... (1 Reply)
Discussion started by: ramkrix
1 Replies

8. UNIX for Dummies Questions & Answers

awk problem broken pipe

Hello everyone I got a school project that was due yesterday so i really would aprreciate some help the following is an example of the input file (bateriaTestes) 1 caeiro 2000 d 2 pessoa 100 w 3 campos 200 b 4 soares 500 w simple 4 field lines. lines separated by \n and fields by... (1 Reply)
Discussion started by: zemanel
1 Replies

9. UNIX for Dummies Questions & Answers

broken pipe

sometimes I ftp files from an Unix environment from the command prompt of my win2000 pc and I get a "broken pipe" message. sometimes I'll get nothing but sometimes I'll get part of the file. Whats this "broken pipe" about?? (3 Replies)
Discussion started by: eloquent99
3 Replies

10. UNIX for Dummies Questions & Answers

broken pipe?

Hi there, I try to use: > find * | ls but it just gave me one level of ' ls '. and it said: > find * | ls dir1 dir2 f1 f2 f3 Broken Pipe > what is broken pipe? how can i fix it? thks Gusla (3 Replies)
Discussion started by: gusla
3 Replies
Login or Register to Ask a Question