클라이언트에서 요청할 때마다 스레드를 만들어 서버에서 파일을 가져옵니다. 스레드 함수는 일반적으로 void 포인터를 가져옵니다. 하지만 매개 변수로 char 포인터를주고 스레드 함수에 의해 파일 이름을 채우고 싶습니다.스레드 함수의 void * 매개 변수를 변경하는 방법
pt_ret = pthread_create(&thread_id, NULL, getfiles, (void*) thread_buff);
pthread_join(thread_id, pt_ret);
정의 :
코드는 스레드를 생성한다. 스레드 기능 :
void *getfiles(void *ptr) {
/* ... */
char buff[256]; // populating that local buffer with the file names
// ptr should be as a return of buff
}
나는 다른 시도를했지만 그 스레드가 완료된 후에는 thread_buff가 'Q'가됩니다. 당신이 실제로 그것을 알고 있기 때문에
C에서 'void *'에 대한 포인터를 캐스팅 할 필요가 없습니다. –
더 많은 코드를 게시 할 수 있습니까? – Jay