|
|
|
|
Google Site
|
|||||||
| Φόρουμ | Εγγραφή | Ιστολόγιο | Man Σελίδες | Κανόνες Φόρουμ | Σύνδεσμοι | Λευκώματα | Συχνές ερωτήσεις | Χρήστες | Ημερολόγιο | Αναζήτηση | Η σημερινή Θέσεις | Mark Forums Read |
| UNIX για Ανδρείκελα Ερωτήσεις & Απαντήσεις Αν δεν είστε σίγουροι από πού να τοποθετήσει ένα UNIX ή Linux ερώτηση, μετά το εδώ. Όλα τα UNIX και Linux Newbies ευπρόσδεκτες!! |
![]() |
|
|
Εργαλεία Θέματος | Αναζήτηση αυτό το νήμα | Βαθμολογήστε Νήμα | Display Modes |
|
|||
|
Τα σήματα ...
(αυτό δημοσιεύτηκε στις scripting φόρουμ, καθώς, αλλά κατάλαβα ότι πρέπει να πάει εδώ) Λοιπόν, τι συμβαίνει είναι το εξής:
Για το πρόγραμμά μας, είχαμε να δημιουργήσουμε το δικό μας κέλυφος, και όταν ο χρήστης πατήσει ctrl-γ μόνο στο cmdline, τότε αυτό το μήνυμα θα ήταν να αγνοηθεί, αλλά αν υπάρχει μια νέα διαδικασία που κινείται, ας πούμε, "sleep 10", και Ctrl-C ήταν πατημένο, τότε η διαδικασία αυτή θα πρέπει να λυθεί ... Ωστόσο, το πρόβλημά μου βρίσκεται μέσα σε πλαίσιο διαδικασιών ... όταν πατήστε ctrl-γ μετά την εκτέλεση κάτι σαν "sleep 10 &", όπου η '&' δείχνει ότι είναι ένα πλαίσιο διαδικασίας που χρησιμοποιεί το σωστό, αν μου SIGINT_handler υποκατάστημα, αλλά τερματίζει τη διαδικασία .... κι έτσι είναι σίγουρα κάτι λάθος, είτε με τον χειριστή, ή η τοποθέτηση του σήματος. Τι δεν παίρνω είναι ... αν το ctrl-c στη γραμμή εντολών δεν κλείσετε το πρόγραμμα, γιατί θα την καταγγείλει διαδικασία ιστορικό μου; Μήπως επειδή η διαδικασία μητρική βάζει μόνο το ctrl-γ επάνω διαδικασίες παιδί; Αν ναι, υπάρχει ένας τρόπος για να προσθέσετε κάτι για να SIGINT_handler μου για να το αγνοήσει αυτό το μήνυμα; **** Επιτρέψτε μου να πω ότι έχω επιτυχία ήταν σε θέση να αγνοήσει το σήμα για μια διαδικασία υπόβαθρο, αλλά αυτό τον τρόπο δεν χρησιμοποιεί SIGINT_handler μου, που θέλω είναι να χρησιμοποιήσετε κάποιο κείμενο έτσι γίνεται εκτύπωση. Ο τρόπος που μιλάω του χρησιμοποιεί μόνο "σήμα (SIGINT, SIG_IGN)", αλλά, όπως είπα, δεν χρησιμοποιεί SIGINT_handler μου ... Αυτό μου SIGINT_handler: άκυρη SIGINT_handler (int sig) ( εάν (foreground_pid \u003d\u003d 0) ( fprintf (stderr, "\ nSIGINT αγνοήθηκε \ n")? ) άλλος ( kill (foreground_pid, SIGINT)? foreground_pid \u003d 0? ) ) Και στη συνέχεια, όταν εγκαταστήσετε το χειριστή / σήμα, χρησιμοποιώ σήμα (SIGINT, SIGINT_handler) και επίσης να foreground_pid στο αντίστοιχο σημείο της ... έτσι αν κάποιος μπορεί να βοηθήσει, ότι προτίθεστε να είναι φοβερό, και αν θέλετε να δείτε περισσότερα κώδικα ή μερικά πράγματα είναι ασαφή, ρωτήστε. Ευχαριστώ. |
| Sponsored Links |
|
|
![]() |
| Σελιδοδείκτες |
| Εργαλεία Θέματος | Αναζήτηση αυτό το νήμα |
| Display Modes | Βαθμολογήστε αυτό το νήμα |
|
|
Περισσότερα UNIX και Linux Forum Θέματα που μπορεί να σας Χρήσιμη
|
||||
| Νήμα | Thread Starter | Φόρουμ | Απαντήσεις | Τελευταίο μήνυμα |
| Χρησιμοποιώντας σήματα | kapilv | Προγραμματισμός | 2 | 11-28-2008 05:56 AM |
| Νήματα και Σημάτων | ripunjay | HP-UX | 0 | 04-03-2006 07:21 AM |
| Threads Σήματα | uday_kumar_spl | Προγραμματισμός | 1 | 11-03-2004 03:44 AM |
| Σήματα σε Shell | UNIX για Advanced & Expert Χρήστες | 5 | 03-26-2003 12:31 μμ | |
| Σήματα σε HP-UX | kapilv | Προγραμματισμός | 1 | 08-18-2001 10:58 μμ |