일단 클라이언트 연결을 허용하면 C 프로그램을 작성합니다. 이런 일이 생기면 두 개의 스레드를 생성하려고하지만이 작업을 수행 할 수 없습니다.포크 다음에 pthreads 생성
pthread_t t1, t2;
void *r_loop();
void *w_loop();
.
.
.
sockfd = accept(r_sockfd, (struct sockaddr *) &address, &len);
if (sockfd < 0)
printf("Error accepting\n");
if (!fork())
{
int r_thread = pthread_create(&t1, NULL, r_loop, NULL);
int w_thread = pthread_create(&t2, NULL, w_loop, NULL);
pthread_join(r_thread, NULL);
pthread_join(w_thread, NULL);
exit(0);
}
이 기능을 실행하면 r_loop 및 w_loop 함수가 실행되지 않습니다.
함수는'void * (void *)'로 선언해야합니다. –
힌트 : 항상 API 호출의 반환 값에서 오류를 테스트하십시오. 오류 코드는 친구입니다. – cdarke