void *interpretWrapper(void* arg) {
char* res = (char*) arg;
cout << res[0] << endl;
}
void *recvConn(void * data) {
char buffer[1024];
int buffer_len = 1024;
while(true) {
memset(buffer, 0, buffer_len);
if((bytecount = recv(*csock, buffer, buffer_len, 0)) == -1) {
printf("yalehwyyy\n");
fprintf(stderr, "Error receiving data %d\n", errno);
printf("%d", csock);
break;
}else if (bytecount == 0) {
fprintf(stderr, "Socket Closed ! Robotino needs to reconnect !!\n");
break;
}
pthread_t thread_id = 0;
pthread_create(&thread_id, NULL, interpretWrapper, &buffer);
pthread_detach(thread_id);
printf("Received bytes %d\nReceived string \"%s\"\n", bytecount, buffer);
}
}
В приведенном выше коде всякий раз, когда я получаю строку, которая помещается в буфер, я печатаю строку в recvConn, и результат является фактически отправленной строкой. Однако, как только строка передается интерпретаторуWrapper, все, что я получаю, когда я печатаю res [0], является пустым символом, тогда как ожидаемый вывод будет первым символом отправленной строки. Я также попытался использовать строки, а также получил пустую строку.Thread получает строку как пустую
Кроме того, я попытался отправить целое число, в то время как печать целого внутри интерпретатора интерпретировала корректно переданное целое число. Я пытался понять это в течение двух дней, что, кажется, проблема?
Где и как определяется «буфер»? –
@JamesKanze Я отредактировал мой вопрос в соответствии с вашими комментариями. Это массив символов. – BitRiver