2010-02-05 14 views
0

我使用write()函數來寫入一個C中的套接字。我不是C專家,有時我知道這個函數可能會失敗,在這種情況下它可以返回某種SIGPIPE。使用此功能時如何正確使用套接字的write()函數?

if(write(sockfd, sendline, sizeof(sendline)) < sizeof(sendline)) 
    { 
     printf("Failed to write string %s to socket" , sendline); 
     return NULL; 
    } 

我的問題是,我怎麼能妥善管理這些樣的錯誤(SIGPIPE等):

這裏是代碼的簡單的一塊,我現在使用?

回答

4

至於「如何處理錯誤」,則需要檢查返回值write()是否爲-1,然後如果要區分錯誤情況請查看errno的值。

SIGPIPE的特定情況下,如果試圖寫入其讀取結束已關閉的套接字,則會將其傳遞給進程。默認情況下,交付SIGPIPE將導致進程終止。如果您不想要這種行爲,那麼您將需要明確忽略SIGPIPEsignal(SIGPIPE, SIG_IGN)),然後write()調用將返回-1,並且errno將等於EPIPE

+0

感謝您的回覆! , 非常清楚 ! – Goles 2010-02-05 12:58:36

相關問題