我正在使用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