Re: sed und regex

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Wed, 7 Jan 2004 14:55:52 +0100

On Wed, Jan 07, 2004 at 02:44:20PM +0100, Simon 'corecode' Schubert wrote:
> On 07.01.2004, at 07:11, Robert Barten wrote:
> >Missverständnis: Das ist mir klar wie bereits im Backup-Beispiel
> >erwähnt, nur startet der Prozess cat doch noch vor der Umleitung auf
> >`bar'. Es ging immer ums Starten, und da sollte es doch sicher geordnet
> >von links nacht rechts zugehen, selbst wenn es sich um
> >Sekundenbruchteile handelt?
>
> ich bin jetzt ehrlich gesagt zu faul um im Source nachzuschauen, aber
> die Logik gebietet folgendes:
>
> 1. cat muss gestartet werden (evtl ein Builtin, aber egal)
> 2. sed muss gestartet werden
> 3. eine Pipe muss zwischen Prozess (1) in Richtung Prozess (2) erzeugt
> werden. Das setzt nun also voraus, dass Prozess (2) bereits existiert,
> sonst koennte man ja stdout nicht auf dessen stdin draufschrauben.
> 4. Die Ausgabeumleitung muss auch eingestellt werden. Das setzt
> wiederum voraus, dass stdout von Prozess (2) bereits umgeleitet ist,
> bevor dieser ausgefuehrt wird.

Du kannst nur die Ausgabe von einem existierenden Prozess umlenken.
Dazu erzeugt die Shell eine Pipe, forked sich dann zu einem neuen
Prozess, ändert die benötigten Filedescriptoren auf die jeweilige
Pipeseite und macht dann einen exec auf das eigendlich Programm.
Abgesehen davon ist die Ausgabe des Rechten Prozesses in dem Beispiel
keine Pipe, sondern direkt das File.

> Es scheint also so, als ob die Umleitungen von rechts nach links
> erzeugt werden? Wie sollte das dann ueberhaupt irgendwann einmal
> funktionieren?

Das kann die Shell halten wie sie lustig ist.

> Nach meiner Erfahrung fork()t die Shell erst, und macht dann die
> Umleitungen (IIRC). Und wie mein Scheduler jetzt will, darf als erstes

Natürlich - anders geht es nicht, da vorher der Prozess noch nicht
existiert und von daher auch noch keine eigenständigen Filedescriptoren
besitzen kann.

-- 
B.Walter                   BWCT                http://www.bwct.de
ticso(at)bwct.de                                  info(at)bwct.de
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 07 Jan 2004 - 14:58:48 CET

search this site