Schrift
[thread]7631[/thread]

system() - Returncode: Was nun?

Leser: 1


<< >> 10 Einträge, 1 Seite
pktm
 2006-01-17 22:37
#62009 #62009
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Kann man die Returncodes von system() irgendwie in lesbare textuelle Form bringen? Also in eine Fehlermeldung?
Weil, dass 0 bei Erfolg zurück gegeben wird ist ja schön, aber ich würde gerne etwas zu meinem Fehler erfahren.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2006-01-17 23:09
#62010 #62010
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
sowas kommt immer auf das programm an!
pktm
 2006-01-17 23:56
#62011 #62011
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ok. Ich wollte testen, ob ich auf meinem Webserver den Befehl 'make' ausprobieren kann, bzw. ob make so erreichbar ist. Deshalb dachte ich, mache ich es so wie in der Windows-Konsole und schicke den Befehl einfach ab und erfahlte dann eine Rückgabe. Sowas wie "No targets specified" oder "command not found".
Also dachte ich mir, könnte ich einfach my $rv = system('make'); ausführen und dann $? oder $! oder den Rückgabewert ausgeben lassen. Jetzt war $rv aber einfach eine Zahl, 591 oder so. Und mit der kann ich nichts anfangen.
Brauchst du die genaue Zahl?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
bloonix
 2006-01-18 00:19
#62012 #62012
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
wie schauts mit open3 aus? schon mal versucht, ob die
fehlermeldung nach stderr zurückgegeben wird?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2006-01-18 00:20
#62013 #62013
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmm... das windows make gibt Meldungen auf STDERR aus... deswegen kann man nicht mal back-ticks verwenden...

aber du könntest open im pipe-mode benutzen.
das schmiert meistens ab, wenn das programm das man aufrufen will, nicht existiert.
pktm
 2006-01-18 00:26
#62014 #62014
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Öhn, also 1. ich möchte herausfinden, ob mein Linux-Server im Web den Befehl make in meinem Modul-Bau-Verzeichnis kann und 2. ich bekomme doch einen Returncode - oder kommt da noch etwas anderes raus? In der Manpage steht davon (glaube ich) nichts.
Eventuell gibt es sowas wie HELPMSG in der Konsole. Drauf kam ich dadurch:
Quote
C:\>net send 127.0.0.1 hallo
Beim Senden einer Nachricht an 127.0.0.1 trat ein Fehler auf.

Der Nachrichtenalias konnte auf dem Netzwerk nicht gefunden werden.

Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 2273 eingeben.


Nun, gibt es sowas?
Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
bloonix
 2006-01-18 00:48
#62015 #62015
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Also jeder Befehl, der bei Ausführung auf der Kommandozeile
einen Fehlertext liefert, gibt diesen entweder nach STDOUT
oder STDERR zurück. Wenn du also, wie esskar schon
angedeutet hat, die Ausgabe des Befehls in eine Pipe
umleitest, dann kannst du dort auch die Fehlermeldung finden.

Wenn du mit open2 oder open3 arbeiten solltest, dann vergiss
nicht, den Prozess mit waitpid wieder einzusammeln.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-01-18 01:00
#62016 #62016
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@esskar: Wenn man Backticks verwenden will, dann kann man STDERR auf STDOUT umleiten... my $output = `programm 2>&1`;
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/
esskar
 2006-01-18 01:12
#62017 #62017
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=renee,18.01.2006, 00:00]@esskar: Wenn man Backticks verwenden will, dann kann man STDERR auf STDOUT umleiten... my $output = `programm 2>&1`;[/quote]
ah ja, stimmt!
ptk
 2006-01-18 03:22
#62018 #62018
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=opi,17.01.2006, 23:48]Also jeder Befehl, der bei Ausführung auf der Kommandozeile
einen Fehlertext liefert, gibt diesen entweder nach STDOUT
oder STDERR zurück.[/quote]
Nicht unbedingt. Unter Unix könnte man /dev/tty (gibt's ein DOS-Äquivalent dazu?) verwenden:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
open my $fh, ">", "/dev/tty" or die $!;
print $fh "Hello, world!\n";
_ _ END _ _

$ ./tty.pl
Hello, world!
$ ./tty.pl > /dev/null
Hello, world!
$ ./tty.pl >& /dev/null
Hello, world!
<< >> 10 Einträge, 1 Seite



View all threads created 2006-01-17 22:37.