ich herauszufinden, wie Signale in C arbeiten Hier ist eines der Beispiele aus alten Prüfungen abgelegt:Signal in C Handhabung
#include<signal.h>
#include<unistd.h>
#include<stdio.h>
#include<errno.h>
//#include <sys/types.h>
void handler1(int sig) {
printf("Phantom");
exit(0);
}
int main()
{
pid_t pid1;
signal(SIGUSR1, handler1); //installing signal handler
if((pid1 = fork()) == 0) { //forking
printf("Ghost");
exit(0);
}
kill(pid1, SIGUSR1);
printf("Ninja");
return 0;
}
Bisher GCC mir zwei Antworten Ghost Ninja
& Ninja Phantom
gibt. Könnte es Ghost Phantom Ninja
oder eine andere Kombination aus 3 Namen produzieren?
Ein Weg, ich sehe es möglicherweise drei Namen produzieren könnte, ist: Gabel, lief in Kind, Druck Ghost
, Ausgang (0) => in Parent, Annahme-/Prozesssignal und von Signal-Handler Druck Phantom
, tötet Kind, druckt Ninja
. Aber ich bin mir nicht sicher, ob meine "Theorie" Bestand hat.
Würde auch die kill(pid1, SIGUSR1)
handler()
aufrufen?
Danke!
Keine Antwort auf die Frage als solche, aber Sie müssen ** nie ** printf() in einem Signalhandler aufrufen. – JeremyP