私の課題は、プリント サーバーの簡素化されたマルチスレッド モックアップを作成することです。
関数 get_server のプロトタイプは次のとおりです。
void *get_request(void *arg);
「パラメータargは、リクエストが読み取られるオープンファイル記述子を指しています。」したがって、テストでは STDIN_FILENO を使用することをお勧めします。
pthread_create(&tid, &attr, get_request, STDIN_FILENO);
関数内で arg を使用しようとしていますが、それを void * から使用可能なものに変更することはできません。たとえば、これはどれも機能しません:
read(*arg, intvariable, sizeof(int)); // can't cast void * error
int fd = *arg; // can't cast void * error
int fd = *(int *)arg; // seg fault
int fd = *((int *)arg); // seg fault
int fd = atoi(arg); // seg fault
// yes I'm aware arg isn't a char* but that's
// from the example code we were given