我正在使用epoll進行網絡編程,我有這段代碼。如何在緩衝區中複製數據?
int str_len = read(m_events[i].data.fd, buf, BUF_SIZE);
printf("read %d \n", str_len);
if(str_len == 0){
if(!removeClient(m_events[i].data.fd))
break;
close(m_events[i].data.fd);
}
else {
printf("ServerManager::eventAcceptLoop, A message has been received \n");
pushWork(buf);
}
的BUF聲明如下
buf[BUF_SIZE];
,我想通過在BUF到functiion 「pushWork」
pushWork(char * pdata){
hand this pdata to the thread pool to parse and handle it
}
我想我需要複製的數據buf中的數據,而不是指向buf,因爲每當有新數據進來時它都會被覆蓋。現在我做類似
char *pdata = buf;
pushWork(pdata)
我應該做memcopy還是別的嗎?並沖洗buf? 請讓我知道我該如何處理這件事。在此先感謝...
如果您要異步使用數據,是的,您需要將它複製到一個新的緩衝區。 – madmik3 2011-06-17 00:51:50