マルチスレッドサーバーを作成しました。リンクリストへのグローバルポインターがあり、スレッドでデータを挿入しようとしていますが、そのデータ (挿入したもの) が保持されていない可能性があります。スレッドでそのグローバル値が保持されていない可能性があります. 私は次のコードを使用しています (これは最も単純なバージョンです)。
struct node {
int cn; //
struct node *next;
};
/*GLOBAL VARIABLES*/
struct node *start; //Global pointer to Linked List
/* END */
int main(int argc, char *argv[]) {
start = (struct node *)malloc(sizeof(struct node));
start -> cn =0;
int pid;
/* Declaration of Server goes here */
printf("Server Running ...\n");
while (1) {
/* accepting socket*/
pid = fork();
if (pid < 0)
error("ERROR on fork");
if (pid == 0) {
close(serverSocket);
dostuff(childSocket,start);
exit(0);
}
else
close(childSocket);
}
return 0;
}
void dostuff (int sock, struct node *pointer){
returnStatus = read(sock, &requestToJoin, sizeof(int));
if (returnStatus < 0)
error("ERROR reading from socket");
else{
/* Insert Data to global Pointer */
}
}