Discussion:
Ctrl-S/Q als "Signal"
(zu alt für eine Antwort)
Martin Vaeth
2005-02-16 21:43:40 UTC
Permalink
Hallo,
das Subject sagt eigentlich schon alles:
Wenn man in einer Bash in xterm die Ausgabe mit Ctrl-S angehalten hat,
kann man dann extern (also ohne manuell in das xterm zu gehen)
beispielsweise von einem Cron-Job mit entsprechenden Rechten
das passende Ctrl-Q "schicken"?
Ist das möglicherweise eines der Standardsignale, und an welchen
Prozess müsste das dann geschickt werden? (Ich habe zwar fast alle
Signale (an bash, xterm und den "blockierten" Prozess) systematisch
durchprobiert, aber vielleicht habe ich dabei doch etwas übersehen).
Die gleiche Frage stellt sich mir auch für "Ctrl-Z/fg" - der
offensichtliche Weg SIGSTOP und SIGCONT zu schicken, funktioniert zwar
"fast", aber danach lässt sich der "wiederbelebte" Prozess nicht mehr
mit Ctrl-C abbrechen. Wie kommt das?

Grüße. Martin
Christian Schneider
2005-02-16 22:31:01 UTC
Permalink
Post by Martin Vaeth
Wenn man in einer Bash in xterm die Ausgabe mit Ctrl-S angehalten hat,
kann man dann extern (also ohne manuell in das xterm zu gehen)
beispielsweise von einem Cron-Job mit entsprechenden Rechten
das passende Ctrl-Q "schicken"?
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
http://www.it-infothek.de/fhtw/semester_2/re_od_03.html
Post by Martin Vaeth
Ist das möglicherweise eines der Standardsignale, und an welchen
Prozess müsste das dann geschickt werden? (Ich habe zwar fast alle
Signale (an bash, xterm und den "blockierten" Prozess) systematisch
durchprobiert, aber vielleicht habe ich dabei doch etwas übersehen).
xoff schickt ein SIGSTOP an den Prozess. SIGSTP verhaelt sich ahnlich,
allerdings ist das ein "interaktives Terminalstoppsignal", aber im
Gegensatz zu SIGSTOP kann man SIGSTP abfangen/ignorieren.
Post by Martin Vaeth
Die gleiche Frage stellt sich mir auch für "Ctrl-Z/fg" - der
Ctrl+Z schickt ein SIGSTP an den Prozess im Vordergrund.
Martin Vaeth
2005-02-17 23:34:31 UTC
Permalink
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
... und xon ein SIGCONT.

Danke. Das war es, was ich gesucht hatte.
Peter J. Holzer
2005-02-19 19:11:11 UTC
Permalink
Post by Christian Schneider
Post by Martin Vaeth
Wenn man in einer Bash in xterm die Ausgabe mit Ctrl-S angehalten hat,
kann man dann extern (also ohne manuell in das xterm zu gehen)
beispielsweise von einem Cron-Job mit entsprechenden Rechten
das passende Ctrl-Q "schicken"?
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.

hp
--
_ | Peter J. Holzer | Weil wir die materielle Welt nicht so
|_|_) | Sysadmin WSR | wahrnehmen, wie sie ist, sind Sachen wie
| | | ***@hjp.at | JPEG, MP3 usw. möglich.
__/ | http://www.hjp.at/ | -- Heiko Schlenker in drsm.
Juergen P. Meier
2005-02-20 08:52:47 UTC
Permalink
Post by Peter J. Holzer
Post by Christian Schneider
Post by Martin Vaeth
Wenn man in einer Bash in xterm die Ausgabe mit Ctrl-S angehalten hat,
kann man dann extern (also ohne manuell in das xterm zu gehen)
beispielsweise von einem Cron-Job mit entsprechenden Rechten
das passende Ctrl-Q "schicken"?
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.
xoff selbst schickt nichts. Hoechstens der Terminal(emulator).

xterm kann man so einstellen, das es genau das tut. Also bei xoff vom
User ein SIGSTOP an den Child-Prozess des xterms schicken (idR. eine Shell).
(naja, zumindest xterm unter Solaris)

Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)
Heiner Steven
2005-02-20 14:40:23 UTC
Permalink
Post by Juergen P. Meier
Post by Peter J. Holzer
Post by Christian Schneider
Post by Martin Vaeth
Wenn man in einer Bash in xterm die Ausgabe mit Ctrl-S angehalten hat,
kann man dann extern (also ohne manuell in das xterm zu gehen)
beispielsweise von einem Cron-Job mit entsprechenden Rechten
das passende Ctrl-Q "schicken"?
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.
xoff selbst schickt nichts. Hoechstens der Terminal(emulator).
xterm kann man so einstellen, das es genau das tut. Also bei xoff vom
User ein SIGSTOP an den Child-Prozess des xterms schicken (idR. eine Shell).
(naja, zumindest xterm unter Solaris)
Wie macht man das denn? Ich halte es für ziemlich unwahrscheinlich,
dass XON einen Prozess wirklich mit SIGSTP stoppt. Wahrscheinlicher
ist, dass der Terminal-Emulator einfach blockiert, und damit auch
die Prozesse, die auf ihn warten.

Heiner
--
___ _
/ __| |_ _____ _____ _ _ Heiner STEVEN <***@nexgo.de>
\__ \ _/ -_) V / -_) ' \ Shell Script Programmers: visit
|___/\__\___|\_/\___|_||_| http://www.shelldorado.com/
Peter J. Holzer
2005-02-20 18:02:51 UTC
Permalink
Post by Juergen P. Meier
Post by Peter J. Holzer
Post by Christian Schneider
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.
xoff selbst schickt nichts. Hoechstens der Terminal(emulator).
Normalerweise (wenn XON/XOFF (Software-Flowcontrol) aktiviert ist)
bewirkt ein XOFF, dass der TTY-Treiber nichts mehr an das Device
schickt, bis er ein XON empfängt. Umgekehrt wird ein Terminal(emulator)
nach Empfang eines XOFF ebenfalls nichts senden, bis er ein XON
empfängt.

Signale werden da keine generiert, höchstens ein SIGIO.
Post by Juergen P. Meier
xterm kann man so einstellen, das es genau das tut. Also bei xoff vom
User ein SIGSTOP an den Child-Prozess des xterms schicken (idR. eine Shell).
(naja, zumindest xterm unter Solaris)
Das kann man zwar zweifellos (es gibt diese Aktionen im Menü, und die
kann man man auch an Tastenkombinationen binden), aber das ist sicher
nicht per default der Fall, und es erscheint mir auch wenig sinnvoll:
Denn der Prozess, den man an der weiteren Ausgabe hindern will, ist ja
meistens nicht die Shell, sondern ein Nachkomme der Shell. Weiters ist
er möglich, dass dieser Prozess einem anderen User gehört (z.B. nach
einem su) oder gar auf einem anderen Rechner läuft. In diesen Fällen
wird man sich mit dem Signaleschicken etwas schwer tun. Und warum sollte
man so eine halbgare Lösung implementieren, wenn Flowcontrol existiert
und in allen Fällen funktioniert?

hp
--
_ | Peter J. Holzer | Weil wir die materielle Welt nicht so
|_|_) | Sysadmin WSR | wahrnehmen, wie sie ist, sind Sachen wie
| | | ***@hjp.at | JPEG, MP3 usw. möglich.
__/ | http://www.hjp.at/ | -- Heiko Schlenker in drsm.
Martin Vaeth
2005-02-20 18:05:36 UTC
Permalink
Post by Peter J. Holzer
Post by Christian Schneider
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.
Doch, unter Linux schon (xterm+bash; mir fielen diesbezüglich
keine Besonderheiten in meiner Konfiguration auf).
Peter J. Holzer
2005-02-20 21:03:27 UTC
Permalink
Post by Martin Vaeth
Post by Peter J. Holzer
Post by Christian Schneider
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.
Doch, unter Linux schon (xterm+bash; mir fielen diesbezüglich
keine Besonderheiten in meiner Konfiguration auf).
D.h., wenn Du "yes" startest und Ctrl-S drückst, schaut das so aus?

y
y
y
y
y

[1]+ Stopped yes
[***@teal xterm]$ ps u | grep yes
hjp 25013 0.2 0.0 1612 492 pts/1 T 21:58 0:00 yes


Eigenwillig. Bei wird nur die Ausgabe angehalten, ich bekomme keinen
Shell-Prompt zurück, wenn ich Ctrl-Q drücke, gehts weiter und wenn ich
(in einem anderen Terminal) schaue, in welchem Zustand der Prozess ist,
dann ist er im Zustand S(leeping) nicht s(T)opped.

hp
--
_ | Peter J. Holzer | Weil wir die materielle Welt nicht so
|_|_) | Sysadmin WSR | wahrnehmen, wie sie ist, sind Sachen wie
| | | ***@hjp.at | JPEG, MP3 usw. möglich.
__/ | http://www.hjp.at/ | -- Heiko Schlenker in drsm.
Martin Vaeth
2005-02-21 09:37:20 UTC
Permalink
Post by Peter J. Holzer
Post by Martin Vaeth
Post by Peter J. Holzer
Post by Christian Schneider
Strg+S ist XOFF und Strg+Q ist XON. stty(1)
[...]
Post by Christian Schneider
xoff schickt ein SIGSTOP an den Prozess.
Auf welchem Unix? Sicherlich nicht unter Linux, HP-UX, Solaris, OSF/1
oder Ultrix.
Doch, unter Linux schon (xterm+bash; mir fielen diesbezüglich
keine Besonderheiten in meiner Konfiguration auf).
D.h., wenn Du "yes" startest und Ctrl-S drückst, schaut das so aus?
[...]
Eigenwillig. Bei wird nur die Ausgabe angehalten
Das ist merkwürdig: Bei "yes" bricht ein SIGSTOP tatsächlich ab
(und im Nachhinein vermute ich, dass es sich so wohl auch mit
mit Shellskripten so verhält, bei denen ich vor meinem ersten
Posting systematisch die Signale durchprobiert habe).
Vor meinem obigen Posting hatte ich es allerdings "mencoder"
getestet, und das hat mit SIGSTOP tatsächlich nur die Ausgabe
angehalten, genauso wie sonst mit Ctrl-S und auf SIGCONT dann
weitergemacht, genauso wie sonst mit Ctrl-Q. Ich kann es selbst
kaum glauben, da man doch SIGSTOP angeblich nicht abfangen kann!?
(Leider bin ich im Moment an einem anderen System, so dass ich
den Test derzeit nicht wiederholen kann).

Loading...