PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Signatur-Erstellung - Fifo bedienen



WarEagle
16.07.04, 13:34
Hi ihrs,

ich möchte gerne ein Programm wie eine Datei ansteuern.
Was ich will :) Ganz einfach, eine Datei haben, die ich z.b. mit "cat datei" auslesen kann.
Diese soll dann schlichtweg "</script/sig.sh" ausführen.
Ich möchte also bei "cut datei" die ausgabe von "/script/sig.sh" bekommen.

Das ganze geht ja mit fifos, also einfahc "mkfifo datei" und dann "echo > datei" bzw. "cat datei", aber leider geht es nicht richtig.
ich bekomme dann entweder einmal die scriptausgabe und das script beendet sich dann, oder aber wenn ich ein while(true) drumbaue immer unendlich viele ausgaben.
nun habe ich verschiedene Ideen gesehen, wo in der While-Schleife getestet wird ob das programm noch läuft etc.
aber irgendwie gefällt mir das nicht. ich hätte gerne, das beim cat das programm direkt ausgeführt wird.
hat da einer eine idee? ich habe scon rumgesucht, aber nichts wirklich gefunden.


Gruß

WarEagle

stefan-tiger
16.07.04, 14:10
Ich weuiß zwar net genau was du willst, aber evtl. kannst du mir da:

http://www.linuxforen.de/forums/showthread.php?t=144634

weiterhelfen, da braucht man auch so ne fifo Datei, nur hab ich kein Plan wie ich ds dort machen muß.

Gruß

WarEagle
16.07.04, 15:43
weiterhelfen, da braucht man auch so ne fifo Datei, nur hab ich kein Plan wie ich ds dort machen muß.



danke, aber das ist leider nicht das was ich brauche. Dort ist der weg genau falschrum :) das habe ich schon hinbekommen, aber ich brauche nicht wie dort "einen empfänger ders tändig empfängt und man nur ab und zu sendet" sondern "einen sender der ständig sendet und einen empfänger der nur ab und zu empfängt".

ich will nix anderes als quasi eine datei, aus der ich eine ständig geänderte signatur auslesen kann.
Aber ich möchte das nicht über ein dauer-lauf-programm realisieren.

denis
16.07.04, 23:39
Wenn ich mich nicht irre, geht dass so:


~% mkfifo test
~% for i in eins zwei drei vier; do echo $i > test; sleep 1; done &
[1] 812
~% cat test
eins
~% cat test
zwei
~% cat test
drei
~% cat test
vier
~%
[1] + done for i in eins zwei drei vier; do; echo $i > test; sleep 1; done


Das sleep ist wichtig, damit cat den FIFO schließen kann, bevor das nächste echo kommt.

WarEagle
17.07.04, 00:45
Klasse!
Danke dir, genau das sleep 1 hatte mir gefehlt, ohne das gehts schief, mit dem gehts prima.
1000 Dank.