Pthread problem



  • Moin,
    ich habe ein serverprogramm gecoded, dieses macht fuer jede anfrage einen neuen prozess auf, das problem ist nur, das der prozess nachdem er nicht mehr gebraucht wird, bzw der client disconnectet nurnoch als zombie existiert. D.H. der prozess wird nicht richtig geclosed woran kann das liegen ?

    void des prozesses:
    void *client_thread(void *fd) {M
    int i;M
    int CL;
    int next;
    int tick;
    i=(int)fd;M
    
              tick = gettick();
    
    while(1) {
            CL = 1;
            if (!session[i]) { break; }
            next = do_timer(tick);
            do_client_sendrecv(gettick(),i);
            do_client_parsepacket(i);
            do_sendrecv(next);
            do_parsepacket();
    
    }
    return NULL;
    exit(0);
    
    }
    

    Was bei aufruf der funktion client_connect erledigt wird:

    if (pthread_create (&session[fd]->ptClient, NULL, client_thread, (void *)fd) != 0) {
            fprintf(stderr, "ERROR: Thread creation problems\n");
            return 0;
            }
    

    M.F.G Sirius 🙂



  • was macht denn das 'return NULL' da ???
    wie soll er denn noch das exit(0) ausführen ??



  • Ein ähnliches Problem wurde hier bereits diskutiert:
    Ein paar Fragen zu den leidigen Threads.
    Als dritte Antwort steht dort was zum ordnungsgemäßen Beenden der Clients.

    (Oder schau' mal hier 😃 )

    Martin


Anmelden zum Antworten