Cordess: Putty Prozesse und ihre abhängigkeit zu einer Session

Wie der Titel schon ein wenig sagt, ich habe eine Allgemeine Frage zu Putty und den Prozessen die in einer Session gestartet werden.

Ich habe ein Programm geschrieben das ich von einer Puttysession aus starte. Wenn ich die Session beende stirbt mir aber der gestartete Prozess auch weg! Warum ist das so??? Könnte es sein das da Abhängigkeiten bestehen, wenn ja welche? Eine Annahme von mir ist bisher, daß das Programm abtürzt wenn er nicht mehr weiß wo er mit dem Ausgabestrom hin soll...eine Fehlermeldung kann ich blöderweise ja dann aber nicht mehr lesen, denn die Puttysession wird ja beendet.

Die Frage ist eher allgemein zu verstehen, den zur not kann ich die Session ja einfach laufen lassen, will nur eine Wissenslücke schliessen.

Cordess

  1. ... Wenn ich die Session beende stirbt mir aber der gestartete Prozess auch weg! Warum ist das so??? ...

    Hi Cordess,

    wenn du eine PuTTY Session zu einer Maschine öffnest und dich dort einloggst, wird deine Session auf der Maschine als Prozess angelegt und gehandelt. Startest du nun ein Skript, Programm, ... wird für dieses wiederum ein Prozess angelegt und deinem "Session Prozess" als Child-Prozess zugewiesen. Schließt du nun die Session, werden alle Child-Prozesse mit geschlossen.

    Gruss, Wirowax

    1. Hallo!

      wenn du eine PuTTY Session zu einer Maschine öffnest und dich dort einloggst, wird deine Session auf der Maschine als Prozess angelegt und gehandelt. Startest du nun ein Skript, Programm, ... wird für dieses wiederum ein Prozess angelegt und deinem "Session Prozess" als Child-Prozess zugewiesen. Schließt du nun die Session, werden alle Child-Prozesse mit geschlossen.

      Prinzipell ist es auch genauso, wenn ich eine Konsole in KDE öffne und dort ein Programm im Hintgergrund mit & starte. Wenn ich die Konsole schließe, ist das Programm auch weg.

      Aber eine alternative Möglichkeit muss es geben, sonst könnte man keine Daemons starten und die Konsole wieder schließen.
      Ist es jetzt also eine Frage wie ich ein Programm starte oder muss das Programm schon für Daemon Zwecke programmiert sein?

      mfg
        frafu

      1. Hallo!

        Prinzipell ist es auch genauso, wenn ich eine Konsole in KDE öffne und dort ein Programm im Hintgergrund mit & starte. Wenn ich die Konsole schließe, ist das Programm auch weg.

        Ähem. Irgendwie muss ich mir da jetzt selbst widersprechen. Hab das gerade getestet mit einer Konsole. Dort eclipse gestartet und die Konsole geschlossen. Eclipse läuft weiter.

        mfg
          frafu

      2. Aber eine alternative Möglichkeit muss es geben, sonst könnte man keine Daemons starten und die Konsole wieder schließen.
        Ist es jetzt also eine Frage wie ich ein Programm starte oder muss das Programm schon für Daemon Zwecke programmiert sein?

        mfg
          frafu

        Erst mal Danke für die Antworten!
        Es ging mir darum ein Daemon zu programmieren, naja das habe ich ja. Nur das besagte Problem war und ist immer noch da. Klingt schon sehr Sinnvoll die Anmerkungen die ich hier gelesen habe, wußte nur nicht das dann mein "daemon" tatsächlich zu einem Childprozess wird. Nun ja, dazugelernt und dafür Danke.

        Wie kann man das umgehen, ich meine hier mit Putty,...werde mir aber die anderen Alternativen auch ansehen.

        Cordess

        1. Letzte Frage ignorieren, hab da was überlesen!

          Cordess

  2. Wenn ich die Session beende stirbt mir aber der gestartete Prozess auch weg! Warum ist das so?

    Weil Dein Pseudo-TTY, an dem sshd und PuTTY hängen, das Controlling Terminal des Prozesses ist. Wird an diesem Pseudo-TTY "aufgelegt" (Verbindung getrennt), schickt der OS-Kern ein Hangup-Signal (SIGHUP) an alle Prozesse, bei denen dieses Pseudo-TTY als Controlling TTY eingetragen ist. Daraufhin stirbt der Prozess in aller Regel. Abhilfe schaffen Programme wie nohup, das explizite Schließen aller Filehandles im gestarteten (Hintergrund-)Programm, und der setsid()-Systemcall.

    Alexander