Προς το περιεχόμενο

δημιουργία νημάτων και casting


dinak

Προτεινόμενες αναρτήσεις

έχω το εξής πρόβλημα. Σε μία σύνδεση μεταξύ client server δημιουργώ έναν file descriptor. Έστω ότι δημιουργώ και ένα νήμα για την περαιτέρω επεξεργασία της αίτησης μου.

 

>int new_fd;
pthread_create(&tid, NULL, (void *) process_request, (void *) new_fd);

 

και το νήμα καλεί την process_request που είναι δηλωμένη ως εξής

 

>
void process_request(void *socket_fd){

int s_fd=(int) socket_fd;

...........
...........
}

 

αλλά όταν τρέχω το πρόγραμμα εμφανίζεται το bad file descriptor. Τι μπορεί να συμβαίνει; Το πρόβλημα δε μπορεί να βρίσκεται σε κάποιο άλλο σημείο του κώδικα γιατί χωρίς δημιουργία νήματος, τρέχει κανονικά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχεις int new_fd, αλλά θέλεις pointer. Οπότε σωστά το κάνεις cast σε void pointer. Όμως πρόσεξε ότι θέλεις να περάσεις την διεύθυνση του sock. Παίξε λίγο με printf για να καταλάβεις τι περνάς κάθε φορά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...