Schrift
[thread]6015[/thread]

Anwendungsinstallation!: Installation startet nicht!



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Schlampie
 2004-01-14 09:09
#79136 #79136
User since
2003-09-02
36 Artikel
BenutzerIn
[default_avatar]
Ich habe da mal eine Frage:

Wieso funktioniert der Dreck denn nicht??????????????
*scherz*

Also ich habe folgendes Problem:

Ich starte vom Perlskript aus eine Installation einer Anwendung mit einem ganz einfachen open und dann dem Befehl!
Bei einigen Installationen ist das kein Problem und bei anderen fängt er die Installation erst an wenn ich das Skript beende!

Wo dran kann das liegen? Und wie kann man dieses Problem abschalten?

Ich danke euch jetzt schon mal für jede eurer antworten und hoffe das ihr mir weiterhelfen könnt! :-)

Mfg

Schlampie
havi
 2004-01-14 09:12
#79137 #79137
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Welches OS?
Welche Perl-Version?
Kannst du vielleicht mal ein wenig Code posten?

Gruss
Schlampie
 2004-01-14 09:43
#79138 #79138
User since
2003-09-02
36 Artikel
BenutzerIn
[default_avatar]
Windows!
Perl 5.6.1!

Code: (dl )
1
2
3
4
5
6
7
8
9
open(WDINSTALLSP, "wdinstallsp $force $package_block|");
                             wdinstallsp ist der Befehl zur Installation des Softwarepaketes
                                       $force ist für Installationsparameter
                                              $package_block enthält den Namen des Softwarepakets  
           
while(<WDINSTALLSP>){
@rueckgabewert = $_;
}
close WDINSTALLSP;


Edit: Code Tags by Erik\n\n

<!--EDIT|[E|B]|1074100509-->
Dubu
 2004-01-14 16:28
#79139 #79139
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Du solltest dir noch ausgeben lassen, wenn das open() oder das close() schief laeuft:
Code: (dl )
1
2
3
open (...) or die "cannot fork: $!";
...
close (...) or die "cannot close pipe: $!";
havi
 2004-01-14 16:31
#79140 #79140
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Sehr gut @Dubu!

open und close sollte imho mit or die $!; abgefragt werden...

Gruss
eisbeer
 2004-01-14 19:12
#79141 #79141
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
IMMER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1111111111111111


:D
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
[E|B]
 2004-01-14 19:17
#79142 #79142
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Würde keine Pipe benutzen:

Code: (dl )
1
2
system("bla");
exec("bla");


Das tuts auch! :-)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Dubu
 2004-01-14 20:11
#79143 #79143
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Beides liefert aber nicht die Ausgabe des Befehls zurueck, und exec() beendet sogar das Skript. Da ist eine Pipe oder eben Backticks oder qx() passender.

Uebrigens:
Code: (dl )
1
2
3
while(<WDINSTALLSP>){
@rueckgabewert = $_;
}

Das sollte doch wohl eher so aussehen, wenn der zurueckgegebene Text nicht direkt verarbeitet wird:
Code: (dl )
@rueckgabe = <WDINSTALLSP>;

Die Zuweisung in der Schleife ist jedenfalls kaum richtig so, denn es wird ein Skalar immer wieder neu als einziges Element in ein Array gespeichert.
Crian
 2004-01-15 10:57
#79144 #79144
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=havi,14.01.2004, 15:31]Sehr gut @Dubu!

open und close sollte imho mit or die $!; abgefragt werden...

Gruss[/quote]
Bei open stimme ich Dir zu, bei close mache ich das meist nur bei Dateien, in die ich schreibe, denn ob das closen einer Datei, aus der ich alles ohne Fehler auslesen konnte dann noch schiefgeht, obwohl ich meine Daten ja habe, interessiert mich nicht wirklich.

Auch beim close von Dateien, die man geschrieben hat, sollte man vorsichtig sein voreilig zu "die"en... ich hatte jedenfalls schon Fälle, wo das Schreiben geklappt hatte und ich aber trotzdem einen Fehler vom Schließen bekam, weil die Datei in einer anderen Anwendung geöffnet war. In genau dieser Anwendung (Editor) wurde ich dann gefragt, ob ich die veränderte Datei neu einlesen wollen würde, da sie sich auf der Festplatte geändert hätte. Nach dem Einlesen konnte ich dann sehen, dass das Schreiben geklappt hatte, trotz der Fehlermeldung.
Je nach Anwendung bietet es sich da vielleicht an, den Benutzer zu fragen, ob er den Fehler auf eigenes Risiko ignorieren möchte (oder das Programm ist anderweitig in der Lage zu überprüfen, ob die Fehlermeldung harmlos ist).

Aber im allgemeinen hast Du natürlich Recht, man sollte die Rückgabewerte von solchen systemnahen Funktionen eigentlich immer beachten.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
havi
 2004-01-15 11:00
#79145 #79145
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=Crian,15.01.2004, 09:57][quote=havi,14.01.2004, 15:31]Sehr gut @Dubu!

open und close sollte imho mit or die $!; abgefragt werden...

Gruss[/quote]
Bei open stimme ich Dir zu, bei close mache ich das meist nur bei Dateien, in die ich schreibe, denn ob das closen einer Datei, aus der ich alles ohne Fehler auslesen konnte dann noch schiefgeht, obwohl ich meine Daten ja habe, interessiert mich nicht wirklich.[/quote]
Mich interessiert das schon.
Einfach aus dem Grund, damit ich weiss das alles sauber funktioniert hat.

Gruss
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2004-01-14 09:09.