Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5636[/thread]

pipe zu einem tool

Leser: 2


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Nermal
 2003-08-19 13:10
#68703 #68703
User since
2003-08-19
17 Artikel
BenutzerIn
[default_avatar]
ja, aber dieser fehler stammt nicht von dem tool &reg;. wenn ich es nicht von perl aus mache, sondern nackig in der konsole, dann kommt so ein fehler nicht...
gummientchen
 2003-08-19 13:02
#68704 #68704
User since
2003-08-14
26 Artikel
BenutzerIn
[default_avatar]
Na vielleicht so:
/usr/local/bin/R --no-save --vsize=500M --nsize=5000k
:cool:
-- never trust a man who can count to 1023 on his fingers --
gummientchen
 2003-08-19 12:52
#68705 #68705
User since
2003-08-14
26 Artikel
BenutzerIn
[default_avatar]
... wer weiß, wer weiß.
Versuch doch mal, `--save', `--no-save' or `--vanilla' anzugeben ;)

MfG
-- never trust a man who can count to 1023 on his fingers --
Nermal
 2003-08-19 12:46
#68706 #68706
User since
2003-08-19
17 Artikel
BenutzerIn
[default_avatar]
ich habe vor 2-3 wochen die frage gestellt, wie ich einen pipe zu einem tool öffnen kann aus einem perl-code heraus. ihr habt mir auch wunderbar geholfen (leider sind während meines urlaubs alle beiträge verloren gegangen), aber ich bekomme immer noch eine fehlermeldung.
Code: (dl )
1
2
3
4
5
6
7
8
9
open (TOOL, "| /usr/local/bin/R --vsize=500M --nsize=5000k");

# commands to send
print TOOL <<"ENDE";
cmd1
cmd2
cmd3
ENDE
close TOOL;


ich habe die zeilen in der konsole einzeln eingegeben, also daran liegt es nicht. folgende fehlermeldung:

Quote
Fatal error: you must specify `--save', `--no-save' or `--vanilla'


ähm, nett! ;) kann diese fehlermeldung am pipe liegen?

danke für hilfe!

Gruß
Nermal
Nermal
 2003-08-19 13:00
#68707 #68707
User since
2003-08-19
17 Artikel
BenutzerIn
[default_avatar]
ja, klasse. aber wo?
Nermal
 2003-08-19 13:00
#68708 #68708
User since
2003-08-19
17 Artikel
BenutzerIn
[default_avatar]
sorry wegen doppelposting...\n\n

<!--EDIT|Nermal|1061283696-->
ronald
 2003-08-19 13:24
#68709 #68709
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Wenn der Fehler nicht von dem Programm /usr/local/bin/R kommt, dann kommt er evtl. von einem der Parameter cmd1, cmd2 oder cmd3.
Versuch doch mal, nur einen einzigen Parameter zu übergeben.
Vielleicht kommst du der Meldung dann auf die Schliche.

Beachte auch den $PATH. Bist du sicher, dass du /usr/local/bin/R verwendest, wenn du R von der Konsole aufrufst?
Nermal
 2003-08-19 13:34
#68710 #68710
User since
2003-08-19
17 Artikel
BenutzerIn
[default_avatar]
ja, der pfad stimmt. und wenn ich das ganze manuell mache, dann kommt kein fehler. was passiert denn genau, wenn ich so einen pipe aufmache?
snarf
 2003-08-19 13:39
#68711 #68711
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
[quote=Nermal,19.08.2003, 11:10]ja, aber dieser fehler stammt nicht von dem tool ®. wenn ich es nicht von perl aus mache, sondern nackig in der konsole, dann kommt so ein fehler nicht...[/quote]
... hi nermal, nice to see you again ...

Ich denke mal, dass der Fehler doch von "R" (was immer das genau sein soll) kommt - wahrscheinlich beim Schließen der Pipe verursacht. Könnte z.B. sein, dass "R" einen besonderen Charakter benötigt, um seinen Input korrekt zu schließen.

Nur eine Vermutung. Schickst Du irgendein Kommando über die Konsole zum Beenden von "R"?

Kleinere Tryouts zur Fehlersuche:
a) pack die comands mal in eine Datei und schick die Datei via Console an "R"
Code: (dl )
 /usr/local/bin/R < cmd_datei 


b) versuch mal, ein EOF über die Pipe an "R" zu schicken, bevor Du die Pipe schließt

c) schicke die Commandos über die Console an "R" aber beende die Prozedur mit "CTRL-C" oder "CTRL-D"

d) leg das Script einfach mal eine kurze Zeit schlafen, bevor du die Pipe schließt.

... und dann schreib mal, was dabei raus kommt

ReadU, snarf
ronald
 2003-08-19 13:45
#68712 #68712
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Was genau das pipe macht? Gute Frage. Irgendwas mit fork und exec und so. Das ist so kompliziert, dass es niemand richtig versteht.

Ich vermute: bei perl wird bei dem pipe auch nichts anderes passieren als in der Shell.

Allerdings hast du von perl aus kein tty.
Das kann Ärger machen, wenn du ein Programm hast, das ziemlich direkt mit dem Terminal arbeitet. Zum Beispiel habe ich es nicht geschaftt, in das Programm "passwd" etwas mit Pipe zu übergeben. Ich vermute, dass dieses Programm irgendwie den Puffer leer, oder die Tastatur irgendwie ziemlich direkt abfragt. ... ???

übrigens: Programme wie more, tail oder perldoc :) verhalten sich ohne tty auch anders als von der Konsole aus (perldoc IO::Socket > /tmp/xx)!
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2003-08-19 13:10.