Ich lese Nginx Open Source und ich frage mich, warum würde jemand den Elternprozess töten und Kind Prozess den Rest des Programms behandeln? Warum lässt Elternprozess nicht einfach damit umgehen? Ihre Hilfe wird sehr geschätzt.Was ist der Zweck des Ersetzens des Elternprozesses und des Hinterlassens des Kindprozesses nach fork()?
Ich benutze Eclipse CDT, um das Programm zu debuggen, und dies führt dazu, dass mein Debug zu einer Sackgasse kommt, da es weiterhin den Elternprozess debuggt, nicht den Kindprozess (der tatsächlich den Rest des Programms behandelt).
Hier ist ein Ausschnitt aus dem Code:
ngx_int_t
ngx_daemon(ngx_log_t *log)
{
int fd;
switch (fork()) {
case -1:
ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "fork() failed");
return NGX_ERROR;
case 0:
break;
default:
exit(0);
}
/* Do stuff*/
}
EDIT: verstehe ich, dass Verfahren für deamonizing ein Programm ist, aber ich bin immer noch fragen, warum wir, dass am Anfang tun sollte?
Es ist eine Möglichkeit, den Daemon von der Ausführungsumgebung des übergeordneten Prozesses zu trennen. Es ist auch eine Möglichkeit, das Programm im Hintergrund weiterlaufen zu lassen, während der Benutzer weiterhin separat arbeiten kann, was in heutigen Shells mit Hintergrundjobs nicht unbedingt erforderlich ist, so dass nur der erste Grund übrig bleibt. –
Wenn Sie für jede Abfrage verzweigen, wenn Sie die Konfiguration ändern möchten Sie die Gabel beenden ihren Job beenden und töten die Eltern, um eine neue mit der neuen Konfiguration –
@Someprogrammerdude, vielen Dank für Ihre Antwort. Wäre es jedoch nicht schlimm zu erklären, warum wir den Daemon von der Ausführungsumgebung des Parent-Prozesses trennen sollten? Ich habe über Linux in Linux gelesen, aber ich habe es immer noch nicht klar verstanden. Vielen Dank :) –