Christian Seiler: Noch eine Frage

Beitrag lesen

Hallo Tom,

Es gibt unter UNIX kein "Break-Flag".

Da nennt es sich dann SIGINT.

Du widersprichst Dir gerade selbst. Ich zitiere nochmal die Diskussion:

Dennis fragte:

Noch eine kleine nachgeschobene Frage: Welches Signal wird an einen Prozess geschickt, der auf der Shell im Vordergrund läuft, wenn man Strg+C drückt?

Du hast geantwortet:

Eigentlich wird nur das Break-Flag gesetzt durch das Ctrl-C, und die Standard-Output-Routine (Input auch? Weiß ich jetzt nicht auswendig) des Prozesses prüft das bei jedem Schleifendurchlauf. Sollte das Flag gestzt sein, wird zum Exit-Handler verzweigt.

»Eigentlich wird nur« als direkte Antwort daruaf impliziert, dass kein Signal geschickt wird und Du deutest nun das Signal um in Dein ominöses Break-Flag. Bitte, auf diese Art von Diskussion (ich deute meine vorige Meinung so lange um, bis sie mit der Meinung des Gesprächspartners übereinstimmt) habe ich keine Lust.

Das wird bei Vordergrundprozessen durch das Abragen des "Break-Flag" ausgelöst.

Nein. Zwar wird Hardwäremäßig bei jeder Tastatureingabe ein Interrupt ausgelöst (wie bei jeder Hardware, die etwas zu melden hat), aber das führt nur dazu, dass der Tastaturtreiber im Kernel den Zeichencode ausliest, *ohne* irgendwelche Break-Flags oder sonstiges zu setzen. Die Eingabe wird dann an den Terminal-Treiber weitergerreicht. Der entscheidet dann, ob's eine normale Sequenz ist, oder eine besondere Sequenz. Bei einer besonderen Sequenz wird die Eingabe *nicht* weitergeleitet, sondern eine bestimmte Aktion ausgeführt. Es gibt diverse besondere Sequenzen. Ob die Sequenz aktiviert ist und welche Zeichenkombination die zugehörige Aktion aufruft, kann jeder Prozess per tcsetattr() einstellen. Bei der Sequenz, die auf VINTR eingetragen ist (per Default ist dies Ctrl+C, das ist aber wie gesagt änderbar) wird SIGINT aufgerufen, falls das ISIG-Flag aktiviert ist - wenn nicht, wird die Sequenz an den Prozess normal als Eingabe weitergeleitet.

Du siehst: es gibt kein Break-Flag.

Das Flag wird durch CTRL-C gesetzt. Das bezieht sich auf PCs und kompatible.

Keine Ahnung, wo Du das her hast, aber unter UNIX stimmt das definitiv nicht.

Ich sagte ja, dass wir über unterschiedliche Schichten reden.

Nein, Du redest von etwas, das mit Sicherheit nicht einmal annähernd UNIX-kompatibel ist.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
0 111

PHP-CLI, in PHP auf kill reagieren

Dennis
  • php
  1. 0
    Geplagter
    1. 0
      Dennis
  2. 1
    Tom
  3. 0
    Manuel B.
    1. 0
      Tom
      1. 0
        Manuel B.
      2. 0
        eddi
    2. 0
      Dennis
      1. 0
        Manuel B.
        1. 0
          Dennis
          1. 0
            Manuel B.
        2. 0
          eddi
          1. 0
            Manuel B.
    3. 2
      dedlfix
      1. 0
        Tom
        1. 0
          eddi
          1. 0
            Dennis
            1. 0
              Christian Seiler
              1. 0
                Dennis
                1. 0
                  Tom
                  1. 0
                    Christian Seiler
      2. 0

        Funktioniert, aber ich habs noch nicht ganz verstanden...

        Dennis
        1. 0
          Tom
          1. 0

            Noch eine Frage

            Dennis
            • webserver
            1. 0
              Tom
              1. 2
                Christian Seiler
                1. 0
                  Tom
                  1. 0
                    Christian Seiler
                    1. 0
                      Tom
                      1. 0

                        Break, CTRL-C, SIGINT, usw.

                        Tom
                        1. 0
                          Christian Seiler
                      2. 0
                        Christian Seiler
            2. 2
              Christian Seiler
              1. 0
                Dennis
                1. 0
                  Christian Seiler
                  1. 0
                    Dennis
                    1. 0
                      Christian Seiler
                      1. 0
                        eddi
                        1. 0
                          Christian Seiler
                          1. 0

                            sleep() vs. SIGSTOP

                            Dennis
                            1. 0
                              Christian Seiler
                              1. 0
                                Dennis
                                1. 0
                                  Christian Seiler
                      2. 0
                        Christian Seiler
          2. 0
            Tom
            1. 0
              Christian Seiler
              1. 0
                Tom
                1. 0
                  Christian Seiler
                  1. 0
                    Tom
                    1. 0
                      Christian Seiler
                      1. 0
                        Manuel B.
                        1. 0
                          Tom
                          1. 0
                            Christian Seiler
                          2. 0
                            Manuel B.
                      2. 0
                        Tom
                        1. 0
                          Christian Seiler
                          1. 0
                            Dennis
                            1. 1
                              Christian Seiler
        2. 1
          Christian Seiler
          1. 0
            Dennis
            1. 0
              eddi
              1. 0
                Dennis
                1. 0
                  Manuel B.
                  1. 0
                    eddi
                    1. 0
                      Manuel B.
                      1. 0
                        Dennis
                        1. 0
                          Manuel B.
                          1. 0
                            Dennis
                            1. 0
                              Manuel B.
                              1. 0
                                Dennis
                                1. 0
                                  Manuel B.
                                  1. 0
                                    Dennis
                                    1. 0
                                      Manuel B.
                  2. 0
                    Dennis
                    1. 0
                      Manuel B.
            2. 0
              Christian Seiler
              1. 0
                Dennis
                1. 0
                  Christian Seiler
                  1. 0
                    Dennis
  4. 0

    pcntl_fork() und posix_setsid(), was passiert da?

    Dennis
    1. 0
      Dennis
  5. 0

    Optimierung bzgl. Speicherauslastung bei mehreren Prozessen

    Dennis
    1. 0
      Christian Seiler
      1. 0
        Dennis
        1. 0
          eddi
          1. 0
            Dennis
            1. 0
              eddi
              1. 0
                Dennis
                1. 0
                  eddi
                  1. 0
                    Dennis
                    1. 0
                      eddi
      2. 0
        Manuel B.
        1. 0
          eddi
  6. 0

    exec() wartet nicht obwohl aufgerufenes Script sich forked

    Dennis
    1. 0
      eddi
    2. 0
      Christian Seiler
      1. 0
        Dennis
        1. 0
          Christian Seiler
          1. 0
            Christian Seiler
            1. 0
              Dennis
              1. 0
                Christian Seiler
                1. 0
                  Dennis
                  1. 0
                    Dennis
                    1. 0
                      Christian Seiler
                      1. 0

                        mod_auth_pam - Funktionsweise

                        Dennis
                        • webserver
                        1. 0
                          eddi
                          1. 0
                            Dennis
                            1. 0
                              Dennis
                              1. 0
                                eddi
                      2. 0

                        mod_authnz_external und pwauth

                        Dennis