dinak Δημοσ. 28 Μαρτίου 2011 Share Δημοσ. 28 Μαρτίου 2011 έχω το εξής πρόβλημα. Σε μία σύνδεση μεταξύ 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. Τι μπορεί να συμβαίνει; Το πρόβλημα δε μπορεί να βρίσκεται σε κάποιο άλλο σημείο του κώδικα γιατί χωρίς δημιουργία νήματος, τρέχει κανονικά. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
javavall Δημοσ. 28 Μαρτίου 2011 Share Δημοσ. 28 Μαρτίου 2011 >int new_fd; pthread_create(&tid, NULL, (void *) process_request, (void *) &new_fd); > void *process_request(void *socket_fd){ int s_fd= *((int *)) socket_fd; ........... ........... } Για δοκίμασε κάτι τέτοιο... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
dinak Δημοσ. 28 Μαρτίου 2011 Μέλος Share Δημοσ. 28 Μαρτίου 2011 ναι!!! τώρα δούλεψε μια χαρά...αν και δεν έχω καταλάβει γιατί ευχαριστώ πολύ! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
javavall Δημοσ. 28 Μαρτίου 2011 Share Δημοσ. 28 Μαρτίου 2011 Έχεις int new_fd, αλλά θέλεις pointer. Οπότε σωστά το κάνεις cast σε void pointer. Όμως πρόσεξε ότι θέλεις να περάσεις την διεύθυνση του sock. Παίξε λίγο με printf για να καταλάβεις τι περνάς κάθε φορά. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.