Schrift
[thread]6856[/thread]

win32::process: alles in log datei schreiben

Leser: 3


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Rambo
 2005-04-06 13:12
#53383 #53383
User since
2003-08-14
803 Artikel
BenutzerIn

user image
hallo,

ich arbeite in einem meiner scripte mit win32::process und
rufe darüber eine java programm aus was dann auf der
konsole ihre ausgabe schreibt.
kennt ihr eine möglichkeit wie ich vor dem process eine
log datei auf mache und alles dort reinschreibe was auf der
console getan wird?
wichtig ist das sowohl in eine datei als auch auf der console
die daten geschrieben werden.

merci rambo
Rambo
 2005-04-06 16:32
#53384 #53384
User since
2003-08-14
803 Artikel
BenutzerIn

user image
ich habe es jetzt mal mit folgendem ansatzt probiert leider ohne erfolg
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use strict;
use Win32::Process;
use Win32;

close STDOUT;
open STDOUT, ">>test.txt";

sub ErrorReport
{
print Win32::FormatMessage( Win32::GetLastError() );
}
my $ProcessObj = "";
print STDOUT Win32::Process::Create($ProcessObj,
"D:\\WIN32APP\\JRE_142_03\\bin\\java.exe",
"java.exe -version",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();

$ProcessObj->Suspend();
$ProcessObj->Resume();
$ProcessObj->Wait(INFINITE);


close STDOUT;

habt ihr irgendeinen hinweis für mich?

fürti rambo
sesth
 2005-04-06 17:56
#53385 #53385
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Setze mal den 4. Parameter ($iflags) auf 1. Dann werden die Handles vom Caller vererbt.
Gruß
Thomas
Rambo
 2005-04-06 18:05
#53386 #53386
User since
2003-08-14
803 Artikel
BenutzerIn

user image
leider auch nicht :-(
esskar
 2005-04-06 18:25
#53387 #53387
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
man kann die pipes umleiten und dann wieder auf die console (console != stdout) rausschreiben... hab das in c++ gemacht, versuch es nachher nach Perl zu übersetzen!\n\n

<!--EDIT|esskar|1112797560-->
sesth
 2005-04-06 18:52
#53388 #53388
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Es gibt ein Unix Tool "tee", das auch auf Win portiert ist (http://unxutils.sourceforge.net/). Damit kann man die Ausgabe in eine Datei umleiten und gleichzeitig auf der Konsole ausgeben.
Gruß
Thomas
Rambo
 2005-04-06 18:53
#53389 #53389
User since
2003-08-14
803 Artikel
BenutzerIn

user image
wäre super wenn du da was finden würdest!
esskar
 2005-04-06 18:57
#53390 #53390
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=sesth,06.04.2005, 16:52]Es gibt ein Unix Tool "tee", das auch auf Win portiert ist (http://unxutils.sourceforge.net/). Damit kann man die Ausgabe in eine Datei umleiten und gleichzeitig auf der Konsole ausgeben.[/quote]
tut wohl das selbe wie CPAN:IO::Tee, oder?
sesth
 2005-04-06 19:07
#53391 #53391
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Ich vermute, dass IO::Tee nur im Perl-Skript wirkt. Der Sub-Prozess schreibt ja nun mal auf stdout und weiß nichts vom duplizierten Handle im Skript. Die tee.exe kann man folgendermaßen einsetzen (wenn ich das noch richtig zusammenbekomme):
Code: (dl )
java .... | tee logfile.log

Damit wird das Handle dann im Sub-Prozess dupliziert und in Perl muss man gar nichts machen.
Gruß
Thomas
esskar
 2005-04-06 20:00
#53392 #53392
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
jep;
sowas würde ja easy mit DuplicateHandle gehen, aber ich finde kein Perl-Modul, dass das bereitstellt!
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2005-04-06 13:12.