Schrift
[thread]8633[/thread]

Aufruf mit system kehrt unter windows sofort zurüc: aufruf eines programms mittels system()

Leser: 1


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
ripperrd
 2007-01-10 16:08
#73055 #73055
User since
2006-10-19
8 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hoffe ihr könnt mir helfen...

Ich habe folgendes Problem: In meinem Perl Skript muss ich an einer Stelle ein konsolenbasiertes Java-Programm starten. Dazu verwende ich:

system(java -jar klasse)

das programm wird auch aufgerufen und ich bekomme den eingabeprompt des java programms. Kurz darauf wird es allerdings beendet und das Perl Skript setzt seine arbeit fort. Der system Aufruf gibt dden returncode 65280 zurück.

Normalerweise sollte eigentlich erst nach dem ende des Java Programms das Perl Skript weiterlaufen.

Der Fehler ist ebenfalls reproduzierbar wenn man die cmd.exe von windows mit system aufruft. Dort sollte das Perl Skript ebenfalls erst nach einem exit im cmd.exe weiterlaufen, beendet die eingabeshell aber vorzeitig.

Danke
GwenDragon
 2007-01-10 16:51
#73056 #73056
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Code: (dl )
system(java -jar klasse)

So gehts nicht!

Code: (dl )
system("java", "-jar", "klasse")


Rufe mal in der Konsole perldoc -f system auf, dann bekommst du die Infos zu system().

Zudem solltest du bei java und klasse vielleicht den kompletten Pfad eingeben.\n\n

<!--EDIT|GwenDragon|1168440887-->
ripperrd
 2007-01-10 17:10
#73057 #73057
User since
2006-10-19
8 Artikel
BenutzerIn
[default_avatar]
Das Problem besteht auch so weiterhin:

Das Javaprogramm wird korrekt gestartet. Dann nach ein paar Sekunden wird es einfach beendet und das Perl Skript läuft weiter...
GwenDragon
 2007-01-10 17:34
#73058 #73058
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
In der Konsole diese Skript aufrufen:
Code: (dl )
1
2
3
4
5
6
7
8
system("javaw", "-jar", "klasse");
$exit_value  = $? >> 8;
$signal_num  = $? & 127;
$dumped_core = $? & 128;

print "exit with:\nexit_value=$exit_value\nsignal_num=$signal_num\ndumped_core=$dumped_core";

1;


Was wird dann ausgegeben?\n\n

<!--EDIT|GwenDragon|1168444815-->
renee
 2007-01-10 18:33
#73059 #73059
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also das hier funktioniert bei mir:
Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl

use strict;
use warnings;

my $test = "calc.exe";
system($test);
print $test;


Bei mir ist nur ein klasse Effekt wenn ich cmd.exe ausführen lasse. Dann öffnet sich keine neue DOS-Box, sondern es bleibt alles im aktuellen Fenster...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2007-01-10 18:41
#73060 #73060
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
@renee wenn schon ein Konsolenfenster existiert soll auch kein neues geöffnet werden. Ein neues Fenster bekommst du mit start.

MfG PerlProfi
ripperrd
 2007-01-11 10:45
#73061 #73061
User since
2006-10-19
8 Artikel
BenutzerIn
[default_avatar]
@gwendragon:

die ausgabe ist:

exit_value=255
signal_num=0
dumped_core=0

Das Javaprogramm startet und beendet sich nach wenigen sekunden von selbst.

Dasselbe Problem tritt auch mit cmd auf...
renee
 2007-01-11 11:33
#73062 #73062
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig' mal bitte etwas mehr Code. Bitte Copy&Paste benutzen und nicht abtippen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
vayu
 2007-01-11 12:05
#73063 #73063
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hast du das Javaprogramm schonmal korrekt ohne Perl gestartet?
also mal per Hand den Befehl ausgeführt? :)
ripperrd
 2007-01-11 13:53
#73064 #73064
User since
2006-10-19
8 Artikel
BenutzerIn
[default_avatar]
Mehr Code gibt es leider nicht...

Das Perl Programm besteht nur aus dem system() Aufruf und ein paar Print anweisungen danach ... (der rest kommt erst, wenn das Problem behoben ist)

Wenn ich das Java Programm von Hand starte funktioniert alles Problemlos...
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2007-01-10 16:08.