在Linux中的套接字編程中我需要在套接字中寫入數據,但我不知道套接字是打開還是關閉。如何知道該套接字是打開並關閉而未讀取的?檢查連接是否打開或關閉?(在Linux中爲C)
printf("befor read%d\n", n);
bzero(buffer, MAX_SIZE_BUFFER);
n = read(sockfd, buffer, MAX_SIZE_BUFFER - 1);
printf("after read%d\n", n);
if (n <= 0)
{
break;
}
printf("befor write%d, s: %d \n", n , sockfd);
n = write(newsockfd, buffer, n);
if (n <= 0)
{
break;
}
我從sockfd讀取,我確信這個連接是打開的。何時在newsockfd中寫緩衝區我不知道newsockfd是打開還是關閉如何檢查newsockfd是否已關閉?
我知道問題。在書寫連接中間關閉。例如在500個連接關閉並寫入程序時寫入1024個數據。如何避免這一點?
這會起作用,另一種選擇是使用'sigaction'來忽略'SIGPIPE'(將其處理程序設置爲'SIG_IGN')。 – caf 2009-11-25 12:42:56