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

Χειρισμός σημάτων μεταξύ γονέα παιδιού C

Ερώτηση

Ο πατέρας δημιουργεί με fork ένα παιδί για να κάνει exec αλλά όταν θα έρθει το SIGINT θα τερματίσει ο πατέρας. Πως μπορεί να το αγνοήσει ο πατέρας αλλά όχι το παιδί ?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

5 απαντήσεις σε αυτή την ερώτηση

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

  • 0

Θα καλεσεις τη signal(SIGINT, siginthandlerFunc) ξεχωριστα στον κωδικα του παιδιου και του πατερα

pid_t pID = fork();
if (pID == 0)                // child
{
// Code only executed by child process
    signal(SIGINT, siginthandlerFunc);
}
else if (pID < 0)            // failed to fork
{
    exit(1);
}
else                                   // parent
{
// Code only executed by parent process
    signal(SIGINT, siginthandlerFunc2);
}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Μπορώ να βάλω στον πατέρα την sigignore και στο παιδί να αφήσω να περάσει το signal κανονικά?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Δημοσ. (επεξεργασμένο)

Τελικά έβαλα τον πατέρα να το αγνοεί και το παιδί να καλεί την signal(SIGINT,SIG_DFL) και λειτούργησε.

 

Τώρα πήγα να ενσωματώσω αυτά μέσα σε ένα πρόγραμμα το οποίο καλώ την ptrace και δεν λειτουργούσε τίποτα.

 

edit:  Μήπως το θέμα είναι με την trace?

Επεξ/σία από pagratios

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

έκανα το εξής

 

childID = pid; //chilcID global
act.sa_handler= handler;
sigfillset (&( act.sa_mask ));
sigaction (SIGINT , &act , NULL ); 
sigaction (SIGHUP , &act , NULL ); 
sigaction (SIGTERM , &act , NULL ); 

στον πατέρα και η συνάρτηση είναι η

 

void handler(int signo)
{
	//printf("pid = %u\n",childID);
	kill(childID,signo);
}

αλλά το παιδί δεν καταλαβαίνει τίποτα.

 

Και αν αντί για signo βάλω SIGKILL τότε τερματίζει αλλά ο πατέρας κολλάει

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε έναν λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι εύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
×
×
  • Δημιουργία νέου...

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.