Re: 4.4 -> 4.7: /bin/sh very broken?

From: Bernd Walter <ticso(at)cicely9.cicely.de>
Date: Sun, 16 Mar 2003 02:39:44 +0100

On Sat, Mar 15, 2003 at 11:54:09PM +0000, Peter Much wrote:
> <ticso(at)cicely.de> aka Bernd Walter schrieb
> mit Datum Sat, 15 Mar 2003 13:28:25 +0100 in m2n.de.fbsd.questions:
>
> |> Ansonsten: wie kann man eigentlich diese schlauen Meldungen
> |> ("Killed", "Alarm clock", etc.) loswerden? Ich meine, zumindest in
> |> Shellscripts will ich sowas nicht (wenn da ein Prozess durch signal
> |> beendet, dann ist das Absicht), deswegen nehme ich da ja auch
> |> /bin/sh und keine komfortable Bloatshell.
> |
> |trap 'wait > /dev/null' 20
>
> Schoen. Hatte ich eigentlich gesagt, dass ich in Shellscripts
> gerne Parallelprocessing mache? >:)

Der trap sollte eigendlich keine Auswirkungen darauf haben.

> Es ist nicht wirklich das, wonach ich fragte (ich will die
> Funktionalitaet nicht deshalb loshaben, weil mich der text
> stoert, sondern weil jede komplexe Funktionalitaet, die mich
> nichts nuetzt, nur das Fehlerpotential erhoeht), aber wenn
> ich die Ausgabeumleitung weglasse, dann kriege ich damit fuer
> nonparallele Scripts zumindest das Verhalten, wie es bei 4.4
> war.

Du hast explizit gefragt, wie man die Meldungen loswerden kann.
Es wird wohl letzlich irgendein Bug inner /bin/sh sein.

> In signal.h lese ich:
> #define SIGCHLD 20 /* to parent on child stop or exit */
>
> Sehe ich das so richtig, dass das ein job-control Feature ist?

Jedesmal, wenn ein Child der Shell beended wird, dann wird der
Shell sigschild traphandler ausgeführt.
Das ist nicht ganz das gleiche, wie ein sigchild handler in C, bei
dem für mehrere childs nur einmal die Funktion aufgerufen werden
könnte.

> Hintergrund: Ich hab mich mal vor Zeiten gewundert, warum die
> Meldung "Killed" auc dann erscheint, wenn der Prozess mit
> kill -9 abgewuergt wurde und mithin gar keine Moeglichkeit
> mehr hat, eine Meldung auszugeben. Dann hat mir ein "guru"
> gesagt, die shell wuerde das anhand der *oberen Haelfte des
> Returncode* ermitteln. Das stimmt ja dann offenbar nicht so
> ganz?

Doch natürlich - das ist vollkommen richtig, nur erzählen wir der
Shell, daß wir bei Beenden eines Childs selber bestimmen wollen,
was daraufhin passiert.

-- 
B.Walter                   BWCT                http://www.bwct.de
ticso(at)bwct.de                                  info(at)bwct.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 16 Mar 2003 - 02:40:34 CET

search this site