這是服務器代碼的一部分。當客戶端退出時,服務器程序,而不取芯以下行後死亡:程序在socket之後退出無核心文件::發送
n = send(s, buf+total, bytesleft, 0);
下面是函數:
static ssize_t conn_Send(int s, u8* buf, ssize_t len)
{
ssize_t total = 0; // how many bytes we've sent
ssize_t bytesleft = len; // how many we have left to send
ssize_t n;
while(total < len)
{
n = send(s, buf+total, bytesleft, 0);
//abort();
if (n < 0)
{
return n;
}
total += n;
bytesleft -= n;
}
return total;
}
我已經在明顯的地方看了看:的/ proc/sys目錄/內核/ core_pattern設置正確,並且如果「// abort();」程序確實退出了核心文件在上面註釋掉了。
任何想法?我在智慧結束。
使用調試器來弄清楚發生了什麼。我沒有看到我們可以如何幫助你,我們需要整個調用堆棧和相應的代碼。 – Mat
如果n <0,你應該立即調用perror()或朋友。 – EJP