Ich schreibe einen TCP-Server, der sehr wie ein Chatroom funktioniert und auf diese Frage stieß.Wie drückt man zusätzliche Parameter in eine Reaper-Funktion, wenn einem Elternteil signalisiert wird, ein Kind zu töten (c)?
Wenn ein Benutzer eine Verbindung herstellt, wird ein untergeordneter Prozess für den Benutzer erstellt.
Wenn sich ein Benutzer anmeldet, speichere ich seinen Benutzernamen in eine Textdatei, online.txt
Aber wenn sich ein Benutzer abmeldet, muss ich den Benutzer von online.txt
(PROBLEM) entfernen, die Eltern dann signals
ein reaper()
und das Kind tötet.
Meine Fragen sind:
Q1: Wie ich in zusätzliche Informationen an die Reaper (wie Benutzername, dass der Benutzer sich einloggen verwendet) drücken kann, so dass es dem Benutzer auch von online.txt
entfernen? Oder gibt es eine andere bessere Methode, dies zu tun?
Q2: wo bekommt sig
in reaper()
seinen Wert aus? Kann ich dem Schnitter zusätzliche Parameter hinzufügen?
Q3: Könnte ich die PID des Kindes als eine Art Primärschlüssel für login.txt verwenden? Wenn ja, wie kann ich die PID des Kindes während reaper()
abrufen, die vom Elternteil angerufen wird?
Der Schnitter sieht wie folgt aus:
void reaper(int sig)//where does sig come from?
{
int status;
while (waitpid(-1, &status, WNOHANG) >= 0)
;
}
Das Signal von der Mutter verwendet sieht wie folgt aus:
(void) signal(SIGCHLD, reaper);//how can I add more parameters?
Danke im voraus, ich hoffe auf einmal drei Fragen nicht zu ist gierig.
Jeder Einblick in eine der Fragen wird sehr geschätzt.
Einem Elternteil wird signalisiert, ein Kind mit einem Schnitter zu töten ... Manchmal frage ich mich, was harmlose und unwissende Zuschauer denken, wenn sie zufällig über deine Schulter schauen, während du eine Frage wie diese eintippst? Und was wird dann mit dir passieren und wie wirst du das erklären, wenn sie die Polizei rufen ... – Secure
Ich nehme an, dass ich in Kürze von diesem Forum ausgeschlossen werde. –