Perl System() Ausgabe

Registriert
Sep. 2010
Beiträge
174
Moinsen, ich habe folgenden Code-Ausschnitt:
Code:
if(system("/etc/init.d/apache2 >> /dev/null") == 0){
	print "Apache - Fehlt!\n";
	die("Programm fehlt\n");
}

print "Apache - Ok\n";

if(system("/etc/init.d/proftpd >> /dev/null") == 0){
	print "ProFTPd - Fehlt!\n";
	die("Programm fehlt\n");
}
print "ProFTPd - Ok\n";

Beim ersten System wird Text ausgegeben, obwohl ich nach /dev/null umleite, beim Zweiten ist alles super und nix wird angezeigt

Jemand eine Ahnung wie man das beheben kann?
 
Ach, Perl... Damit durfte ich mich heute den ganzen Tag beschäftigen. Und gestern. Und vorgestern.

Nun zu deinem Problem.

Bist du sicher, dass dev/null nicht schon durch den apache belegt ist und deswegen nichts ausgegeben wird?
 
Es soll ja nix ausgeben, beim prüfen von proftpd wird auch nix ausgegeben wenn ich das prüfen ob apache da ist lasse.
 
Code:
if(system("/etc/init.d/proftpd >> /dev/null") == 0){

Aber die Bedingung scheint falsch zu sein. Würde sie zutreffen, würde er ja in den Körper der Bedingung gehen, oder?
Ergänzung ()

Oder beim ersten, je nachdem :D
 
Code:
if(system("/etc/init.d/proftpd >> /dev/null") == 0){
Zuerst hatte ich da != statt ==, aber da meintes immer wäre nicht installiert (ist es aber, unter genau dem Pfad) also hab ichs geändert


Perl treibt mich noch in den Wahnsinn...
 
Perl treibt mich noch in den Wahnsinn...

Unterschreib ich so :D

Wenn ich das richtig verstehe, verwirfst du die Ausgabe des Systemaufrufs "etc/init.d/programm". Wenn es das Ding schafft, müsste es den Errorcode 0 zurückgeben, oder?

Scheinbar ist das nur beim Zweiten der Fall, wenn du beim ersten keine Ausgabe bekommst, oder?
 
Nope stimmt alles. Apache schreibt aber auf den STDERR kanal, da muss man 2> statt >> nehmen... Lag am Linux.

BTW.Perl ist eine schöne Sprache und eigentlich doch auch so schön einfach.... Aber manchmal wirklich dreck


Thread kann geschloßen werden
 
Zurück
Oben