Also
Bei meinem Script wartet er einfach auf eine Eingabe. Diese nimmt er aber nur von der Tastatur entgegen. Wenn ich mit echo "blabla" > /proc/processid/fd/1 etwas hin schicke passiert gar nichts. Auch bei alle anderen fd passiert gar nichts.
Ich habe mir nun den read source code etwas angesehen.
Die erstellen ja eine eigene PIPE für die STDIN. Dadurch wird das nicht funktionieren.
Ich habe gesehen das es einen Parameter "-u" gibt. Hiermit kann man den zu horchenden fd angeben.
Also habe ich folgendes Script gebaut.
|
Quellcode
|
1
2
3
4
5
6
|
exec 3<&1
while [ 1 ]; do
read -u 3 cmdLine
echo "line: $cmdLine"
done
exec 3>&-
|
Ich sehe nun den unter /proc/processid/fd den filedescriptor 3.
Wenn ich nun hier auch etwas mit echo hin schicke passiert auch nichts.
Nach langen überlegen/lesen hab ich dann probiert das ganze über ein FIFO file zu lösen.
|
Quellcode
|
1
2
3
4
5
6
7
|
if [ ! -p "/tmp/fifofile" ]; then mkfifo /tmp/fifofile; fi
exec 3</tmp/fifofile
while [ 1 ]; do
read -u 3 cmdLine
echo "line: $cmdLine"
done
exec 3>&-
|
Wenn ich dann etwas mit echo "blabla" >/tmp/fifofile etwas in die Fifo schreibe dann führ er dieses blabla aus! Jedoch passiert dann folgendes.
Sobald ich den ersten Befehl geschickt habe läuft so schnell wie möglich die schleife wieder und wieder durch. Er bleibt einfach nicht mehr beim Read stehen und wartet auf eine Eingabe.
Mit deinem Script ist es das gleiche wie bei meinem ersten Script.
Sollte noch jemand eine Idee haben wäre das toll.