warum kann ich in einer Pipe nicht drucken?
Es gibt in XLESS einen Button: print. wenn ich nun Xless in einer Pipe aufrufe, zb. so: "/home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc |/usr/X11R6/bin/xless" wird mir im Xtermfenster ein doc-Dokument angezeigt. Wenn ich nun besagten Button "Print" betätige, bekomme ich eine Fehlermeldung: /usr/bin/lpr: cannot access stdin. Warum? Und was kann ich dagegen tun? Erika
Erika Mannheim wrote:
Es gibt in XLESS einen Button: print.
wenn ich nun Xless in einer Pipe aufrufe, zb. so:
"/home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc |/usr/X11R6/bin/xless"
wird mir im Xtermfenster ein doc-Dokument angezeigt. Wenn ich nun besagten Button "Print" betätige, bekomme ich eine Fehlermeldung: /usr/bin/lpr: cannot access stdin.
Warum? Und was kann ich dagegen tun? Erika
xless verwendet den systemauruf vork(), wenn 'print' ausgewaehlt wird. Hierbei wird der Elternprozess quasi auf Halde geschoben, bis der erzeugte Kindprozess zurueckkehrt,bzw. endet. Der Kindprozess teilt sich zwar mit dem Elternprozess unter anderem die geoeffneten descriptoren... doch ist stdin, wovon der Elternprozess zuerst las nunmehr lehr. Somit erhaelt lpr, das von stdin lesen will,wenn es keinen Dateinamen als Argument erhaelt, keine verwertbaren Daten und bricht ab. Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ... Jemand anderer Meinung? Gruß Daniel
* D.Wolpert schrieb am 05.Mär.2002:
Erika Mannheim wrote:
Es gibt in XLESS einen Button: print.
wenn ich nun Xless in einer Pipe aufrufe, zb. so:
"/home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc |/usr/X11R6/bin/xless"
wird mir im Xtermfenster ein doc-Dokument angezeigt. Wenn ich nun besagten Button "Print" betätige, bekomme ich eine Fehlermeldung: /usr/bin/lpr: cannot access stdin.
Warum? Und was kann ich dagegen tun?
xless verwendet den systemauruf vork(), wenn 'print' ausgewaehlt wird.
Äh, Du meinst fork(), fork wie Gabel.
Hierbei wird der Elternprozess quasi auf Halde geschoben, bis der erzeugte
Hä? Nein. Der Prozeß wird kopiert und existiert zweimal. Einmal als Elterprozeß und einmal als Kindprozeß.
Kindprozess zurueckkehrt,bzw. endet. Der Kindprozess teilt sich zwar mit
Bis der Kernel seine Arbeit erledigt hat, aber das gilt immer.
dem Elternprozess unter anderem die geoeffneten descriptoren... doch ist stdin, wovon der Elternprozess zuerst las nunmehr lehr. Somit erhaelt lpr, das von stdin lesen will,wenn es keinen Dateinamen als Argument erhaelt, keine verwertbaren Daten und bricht ab.
Hm, was ist wenn man eine lange Datei mit xless anschaut, aber nicht alles, sondern nur den Anfang und dann print macht? Dann dürfte noch nicht alles von xless ausgelesen sein.
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Aber mit less funktioniert es auch so, oder? Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: http://localhost/doc/sdb/de/html/index.html | mit Apache: http://localhost/doc/sdb/de/html/key_form.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2
Bernd Brodesser wrote:
* D.Wolpert schrieb am 05.Mär.2002:
Erika Mannheim wrote:
Es gibt in XLESS einen Button: print.
wenn ich nun Xless in einer Pipe aufrufe, zb. so:
"/home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc |/usr/X11R6/bin/xless"
wird mir im Xtermfenster ein doc-Dokument angezeigt. Wenn ich nun besagten Button "Print" betätige, bekomme ich eine Fehlermeldung: /usr/bin/lpr: cannot access stdin.
Warum? Und was kann ich dagegen tun?
xless verwendet den systemauruf vork(), wenn 'print' ausgewaehlt wird.
Äh, Du meinst fork(), fork wie Gabel.
Nein - ich meinte vfork();
Hierbei wird der Elternprozess quasi auf Halde geschoben, bis der erzeugte
Hä? Nein. Der Prozeß wird kopiert und existiert zweimal. Einmal als Elterprozeß und einmal als Kindprozeß.
Kindprozess zurueckkehrt,bzw. endet. Der Kindprozess teilt sich zwar mit
Bis der Kernel seine Arbeit erledigt hat, aber das gilt immer.
dem Elternprozess unter anderem die geoeffneten descriptoren... doch ist stdin, wovon der Elternprozess zuerst las nunmehr lehr. Somit erhaelt lpr, das von stdin lesen will,wenn es keinen Dateinamen als Argument erhaelt, keine verwertbaren Daten und bricht ab.
Sinniger ist aber wohl dass der Kindprozess nicht von stdin lesen kann, da er nicht mit einem Terminal assoziiert ist.
Hm, was ist wenn man eine lange Datei mit xless anschaut, aber nicht alles, sondern nur den Anfang und dann print macht? Dann dürfte noch nicht alles von xless ausgelesen sein.
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Aber mit less funktioniert es auch so, oder? ohne less auch - warum nicht direkt an lpr pipen? antiword /tmp/<wasauchimmer> | lpr
Bernd
"D.Wolpert" wrote:
Bernd Brodesser wrote:
* D.Wolpert schrieb am 05.Mär.2002:
Erika Mannheim wrote:
Es gibt in XLESS einen Button: print.
(...)
Sinniger ist aber wohl dass der Kindprozess nicht von stdin lesen kann, da er nicht mit einem Terminal assoziiert ist.
(..)
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Aber mit less funktioniert es auch so, oder? ohne less auch - warum nicht direkt an lpr pipen? antiword /tmp/<wasauchimmer> | lpr
Das wäre schon richtig, aber ich habe das ganze eben in einem Skript so eingerichtet, dass antiword das doc-Dokument ausliest und zur Darstellung an Xless (per Pipe) weiterleitet. Von dort aus wollte ich die im Xless-Menü vorhandene "Print" option nutzen, was aber offenbar leider nicht geht. Erika
"D.Wolpert" wrote:
Bernd Brodesser wrote:
* D.Wolpert schrieb am 05.Mär.2002:
Erika Mannheim wrote:
Es gibt in XLESS einen Button: print.
wenn ich nun Xless in einer Pipe aufrufe, zb. so:
"/home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc |/usr/X11R6/bin/xless"
wird mir im Xtermfenster ein doc-Dokument angezeigt. Wenn ich nun besagten Button "Print" betätige, bekomme ich eine Fehlermeldung: /usr/bin/lpr: cannot access stdin.
Warum? Und was kann ich dagegen tun?
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Aber mit less funktioniert es auch so, oder? ohne less auch - warum nicht direkt an lpr pipen? antiword /tmp/<wasauchimmer> | lpr
Das stimmt natürlich, löst aber nicht mein Problem. Die Zeile um die es in meiner Frage ging, "/home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc | /usr/X11R6/bin/xless" ist Teil eines Skriptes mit dem ich aus dem Netscape-Messenger heraus .doc-Dateianhänge nach XLess auslesen lassen kann: Das ganze Skript sieht so aus: ------------- #!/bin/csh -f setenv FILE $1 /home/erika/bin/antiword $FILE | /usr/X11R6/bin/xless \ -title "$FILE (MS Word)" -geometry 100x60 ------------- Und da ist die Frage, wie kann ich aus Xless heraus die dargestellte Datei über den P r i n t - Button ausdrucken? Erika
"D.Wolpert" wrote:
Erika Mannheim wrote: >
(...)
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Irgendwas stimmt noch nicht. Ich habe das Kommando einmal versucht: erika@spiro:~ > /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc
/tmp/wasauchimmer.doc /usr/X11R6/bin/xless /tmp/wasauchimmer.doc
...erhalte aber nur: Get Filesize error 2 I can't get the size of '/tmp/MO3C8479B600501EA.doc' /usr/X11R6/bin/xless is not a Word Document. /tmp/wasauchimmer.doc is not a Word Document. Erika
* Erika Mannheim wrote on 05 Mar 2002:
"D.Wolpert" wrote:
Erika Mannheim wrote: >
(...)
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Irgendwas stimmt noch nicht. Ich habe das Kommando einmal versucht: erika@spiro:~ > /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc
/tmp/wasauchimmer.doc /usr/X11R6/bin/xless /tmp/wasauchimmer.doc
Befehl 1: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc \
/tmp/wasauchimmer.doc
Das > am Zeilenanfang ist *kein* Quoting, und beide Zeilen gehören zusammen. Befehl 2: /usr/X11R6/bin/xless /tmp/wasauchimmer.doc Dann geht's. HTH, Tom
Erika Mannheim wrote:
"D.Wolpert" wrote:
Erika Mannheim wrote: >
(...)
Lösung: /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc >/tmp/<wasauchimmer>.doc xless /tmp/<wasauchimmer>.doc ... und print button druecken ...
Irgendwas stimmt noch nicht. Ich habe das Kommando einmal versucht: erika@spiro:~ > /home/erika/bin/antiword /tmp/MO3C8479B600501EA.doc
/tmp/wasauchimmer.doc /usr/X11R6/bin/xless /tmp/wasauchimmer.doc
...erhalte aber nur: Get Filesize error 2 I can't get the size of '/tmp/MO3C8479B600501EA.doc' /usr/X11R6/bin/xless is not a Word Document. /tmp/wasauchimmer.doc is not a Word Document.
Das Ganze sind zwei Befehle: Erst antiword aufrufen und das Ergebnis in /tmp/<schlagmichtot>.doc umleiten Dann xless /tmp/<schlagmichtot>.doc aufrufen. Immer diese Zeilenumbrechenden Mail-Clients :-) CU Werner -- Love your enemies: they'll go crazy trying to figure out what you're up to.
participants (5)
-
B.Brodesser@t-online.de
-
D.Wolpert
-
Erika Mannheim
-
Thomas Preissler
-
Werner Jansen