Schrift
[thread]7352[/thread]

Externes Programm starten! zum verzweifeln: :-(

Leser: 3


<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
master
 2005-10-14 17:50
#58839 #58839
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Will ich ein externes Programm starten. und ohne zu warten weitermachen.

system(); -> blockiert, aber geht.

fork:
bringt fehler wenn
ich die anweisung ein paar mal wiederhole.
(nach PAR gehts glaub eh nicht mehr)

Win32::Process:
Code: (dl )
Win32::Process::Create($ProcessObj,"tool.exe","tool.exe",0,NORMAL_PRIORITY_CLASS,".") or die $!;


Funktioniert unkompiliert wunderbar.. sobald ich eine EXE mache(PAR) funktionierts nicht mehr.....


Wie zum Teufel bekomm ich auf einfache art & weise ein externes Programm zum laufen?

An "Tool.exe" liegts nicht.. wenn ichs normal starte gehts wundebar.....

:angry:
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2005-10-14 18:07
#58840 #58840
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Warum sagst Du eigentlich nie eine Fehlermeldung?? Was funktioniert denn nicht wenn Du mit PAR arbeitest?

Schau Dir mal CPAN:Proc::Background an. Froschpopo hat dazu auch ein kleines Beispielskript ins Wiki gestellt...
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/
master
 2005-10-14 18:25
#58841 #58841
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Es gibt ja keine Fehlermeldung....
Der Prozess wir einfach nicht gestartet...

----
Es würde mir auch reichen, wenn ich einfach sauber eine antwort senden könnte. bzw. der aufrufenden EXE sagen das allse ok ist und sie nicht warten soll..\n\n

<!--EDIT|master|1129300720-->
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2005-10-14 19:20
#58842 #58842
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das kenne ich nicht, dass etwas "einfach nicht gestartet" wird. Hast Du Dir mal die Ausgaben auf der Konsole angeschaut wenn Du es mit CPAN:PAR gepackt hast??
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/
master
 2005-10-17 10:47
#58843 #58843
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Ausgaben?
Gab keine Fehlermeldungen beim Packen mit PAR..

Nervt total... Uncompiliert gehts.. doch nach einsatz von PAR geht nichts mehr...

Werde wohl das externe programm über eine *.bat -Batchdatei starten müssen.. äusserst hässlich....
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2005-10-17 11:11
#58844 #58844
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
Selbst wenn ich über eine BATCH-Datei starten will..
sowird das programm kurz gestartet... und dann sofort wieder beendet!

die zu startende EXE enthält KEINE fehler.. immerhin kann ich sie ja per Hand starten...
starte ich die EXE von hand.. gehts auch problemlos... :-(


vielleicht liegts ja daran, das ich 2 programme gleichzeitig laufen lassen will, die PAR-compiliert sind.. ev. gehts darum ja nicht?\n\n

<!--EDIT|master|1129533665-->
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2005-10-17 11:57
#58845 #58845
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
mit exec() funktioniert alles tadelos..

gibt es eine möglichkeit den befehl exec so auszuführen, ohne das hauptprogramm zu beenden?
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
pKai
 2005-10-17 12:41
#58846 #58846
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=master,14.Oct..2005, 15:50]
Code: (dl )
Win32::Process::Create($ProcessObj,"tool.exe","tool.exe",0,NORMAL_PRIORITY_CLASS,".") or die $!;
[/quote]
eigentlich wundert es mich, dass das in der nicht-PAR-Version funktioniert.
Die Beschreibung von Win32::Process:Create sagt ja eindeutig, dass der 2. Parameter "full path name of executable module" sein soll.
Und $! ist wohl auch nicht der richtige Fehlerstatus.
Code: (dl )
... or die Win32::FormatMessage(Win32::GetLastError());
trifft's wohl eher.
perldoc Win32::Process verschweigt dies alles nicht.
Proc::Background - wie von renee empfohlen - ist übrigens ein Wrapper um Win32::Process, der das Handling im Standardfall vereinfacht.\n\n

<!--EDIT|pKai|1129538541-->
I sense a soul in search of answers.
master
 2005-10-17 13:08
#58847 #58847
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
es funtktioniert schon.. nur wird das neue skript|batch oder was auch immer.. knallhart kurz nach dem start wieder abgebrochen...

im taskmanager erscheint die exe kurz.. und ist dann wieder weg....

der doofe system befehl wartet bis das neue programm "fertig" ist.


ps. im 2. Skript befindet sich eine endlosschleife..
die blockt so sehr, das der ursprüngliche prozess nie die antwort erhält, das alles ok ist...

wenn ich z.b. eine möglichkeit hätte vom 2. skript zum ersten die system-meldung zu schicken das alles ok ist. wärs auch gut...


werde es nun über einen TIMER versuchen.... ps. sleep hilf da nichts.
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
pKai
 2005-10-17 13:35
#58848 #58848
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Wenn er gestartet wird, und sich dann beendet, müsstest du über die GetExitCode-Methode des Prozessobjekts einen Returnwert erhalten (können).
I sense a soul in search of answers.
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2005-10-14 17:50.