Я работаю над сетевым программированием с использованием 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];
и я хочу передать данные в буфере в функцию "pushWork"
pushWork(char * pdata){
hand this pdata to the thread pool to parse and handle it
}
Я думаю, что мне нужно скопировать данные в буфере вместо того, чтобы указывать на буф, потому что они будут перезаписаны всякий раз, когда поступают новые данные. Сейчас я делаю что-то вроде
char *pdata = buf;
pushWork(pdata)
Должен ли я делать мемкопию или что-то еще? и очистить буф?
Пожалуйста, дайте мне знать, как я могу справиться с этим. Заранее спасибо ...