Schrift
[thread]6736[/thread]

2. Task starten! system() blockt...

Leser: 2


<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
master
 2005-02-24 10:46
#52054 #52054
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
folgendes Problem:

ich mache einen aufruf mit system() auf ein FTP-Programm und dann wartet das skript solange bis das FTP-Programm geschlossen(!) wird

Der code unterhalb von System() wird also nicht ausgeführtm da das Signal vom FTP-Programm ev. ausbleibt..

Wie kann ich also mit perl ein fremdprogramm öffnen, unabhängig vom aktuellen Prozess. Es soll ein neuer Task geöffnet werden, und das aktuelle skript soll ohne zu warten(!)
weitermachen und das fenster schliessen...

Der vollständige code is unten...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
print "Content-type: text/html\n\n";
$tmp=$ENV{'QUERY_STRING'};

system('C:\Programme\FTP\FTP.exe ftp://'.$tmp);

print 'Erledigt';

print '
<script type="text/javascript">
window.close()
</script>';
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
snarf
 2005-02-24 10:53
#52055 #52055
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
... wenig Zeit ...

perldoc -f fork

oder vielleicht auch einfach nur ein "&" innerhalb des ystem-calls (der Call sollte dann im Background starten)

hmmm ... "&" auch unter Windows ??? k.A.

snarf
esskar
 2005-02-24 10:55
#52056 #52056
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use strict;
use Win32::Process;

sub ErrorReport {
  die Win32::FormatMessage( Win32::GetLastError() );
}

my $tmp = $ENV{'QUERY_STRING'};
my $pid;

print "Content-type: text/html\n\n";

Win32::Process::Create(
  $pid,
  "C:\\Programme\\FTP\\FTP.exe",
  "ftp ftp://$tmp",
  0,
  NORMAL_PRIORITY_CLASS,
  ".")|| ErrorReport();

print 'Erledigt';
print '<script type="text/javascript">window.close()</script>';
\n\n

<!--EDIT|esskar|1109235356-->
master
 2005-02-24 11:49
#52057 #52057
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
esskar dein code geht nicht...

zudem falsch!:
Code: (dl )
1
2
3
4
  $pid,
"C:\\Programme\\FTP\\FTP.exe",
"ftp ftp://$tmp",
0,

korrekt... das FTP.exe wird mit PARAMETERN aufgerufen.
also eher so:
Code: (dl )
1
2
  $pid,
"C:\\Programme\\FTP\\FTP.exe ftp://$tmp",0,


trozdem klappt nix.. absturz.
andere lösungen?
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2005-02-24 12:09
#52058 #52058
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
gibt's ne Fehlermeldung??

Code: (dl )
1
2
3
4
5
6
7
Win32::Process::Create(
$pid,
"C:\\Programme\\FTP\\FTP.exe",
"FTP.exe ftp://$tmp", # mit dieser Zeile musst Du evtl. "spielen"
0,
NORMAL_PRIORITY_CLASS,
".")|| ErrorReport();


Wenn Du Dir die Doku zu CPAN:Win32::Process anschaust, dass erst der Pfad zum Programm und dann der Aufruf inkl. Argumenten kommt!
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/
ptk
 2005-02-24 12:10
#52059 #52059
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Was ist mit fork? Oder geht der Win32-Trick mit system(1, @ftp_command)?
master
 2005-02-24 12:23
#52060 #52060
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
[quote=renee,24.02.2005, 11:09]gibt's ne Fehlermeldung??

Code: (dl )
1
2
3
4
5
6
7
Win32::Process::Create(
 $pid,
 "C:\\Programme\\FTP\\FTP.exe",
 "FTP.exe ftp://$tmp", # mit dieser Zeile musst Du evtl. "spielen"
 0,
 NORMAL_PRIORITY_CLASS,
 ".")|| ErrorReport();


Wenn Du Dir die Doku zu CPAN:Win32::Process anschaust, dass erst der Pfad zum Programm und dann der Aufruf inkl. Argumenten kommt![/quote]
klappt, aber nur wenn ich
die Fehler-routine raus nehm am schluss

Code: (dl )
".")|| ErrorReport();

zu
Code: (dl )
 ".");


dann gibts keine felhermeldung, aber programm wird nicht gestartet..

modul scheint also installiert zu sein *g*
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
esskar
 2005-02-24 12:30
#52061 #52061
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=master,24.02.2005, 10:49]esskar dein code geht nicht...

zudem falsch!:[/quote]
nö; falsch ist das nicht; siehe manpage
master
 2005-02-24 12:38
#52062 #52062
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
ok... es klappt... aber nur per active-state..

mit UniServer3_2 gehts nicht.
anscheinend modul nicht drauf.
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2005-02-24 13:01
#52063 #52063
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=master,24.02.2005, 11:23]klappt, aber nur wenn ich
die Fehler-routine raus nehm am schluss

Code: (dl )
".")|| ErrorReport();

zu
Code: (dl )
 ".");


dann gibts keine felhermeldung, aber programm wird nicht gestartet..

modul scheint also installiert zu sein *g*[/quote]
Bei sowas ist es immer ratsam, auch die Fehlermeldung zu posten, weil wir unsere Glaskugeln in die Werkstatt gegeben haben ;)
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/
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2005-02-24 10:46.