Wie benutze man fork () um einen untergeordneten Prozess unabhängig von seinem Elternteil zu dämonisieren? [Duplikat]

9

Ich habe ein C-Programm, auf das ich über Terminal zugreife und mit ihm interagiere (normalerweise von SSH auf einer Linux-Box). Ich habe versucht, die Lösung für das Problem zu finden, wo nach dem Schließen des Terminals / Abmelden der Prozess damit endet (das Programm fragt im Grunde nach einigen Optionen und geht dann weiter, ohne dass weitere Interaktion erforderlich ist, also würde ich es gerne haben weiter laufen, auch wenn ich mich von SSH abmelde).

Es gibt Möglichkeiten in Linux, dies zu vermeiden, wie "Bildschirm", aber ich möchte es programmatisch mit C machen, ohne auf installierte Pakete wie den Bildschirm zu setzen - selbst wenn das bedeutet, das Rad neu zu erfinden.

Bisher verstehe ich fork () als die übliche triviale Art, einen Prozess zu dämonisieren, also könnte mir jemand helfen, den Code zu beenden, der den oben beschriebenen Prozess ermöglicht?

Innerhalb des Elternteils:

%Vor%

Ich kann mich jetzt von SSH abmelden, was die ursprüngliche Shell schließt ... und das Kind setzt seine Arbeit fort!

Innerhalb des Kindes:

%Vor%     
user1166981 27.01.2012, 17:58
quelle

1 Antwort

12

um den Prozess vom übergeordneten zu trennen:

verwenden Sie Seid () für den untergeordneten Prozess, es wird das Programm in neuer Sitzung

ausführen %Vor%

Sehen Sie sich das Beispiel auf Ссылка

an

So halten Sie ein Programm auch dann an, wenn das Terminal geschlossen ist :

SIGHUP ist ein Signal, das an einen Prozess gesendet wird, wenn sein Steuerterminal geschlossen ist.

versuche es mit

zu ignorieren %Vor%     
Amine Hajyoussef 27.01.2012, 18:13
quelle

Tags und Links