Thread Linux: Ausgabe von system() in Datei umleiten (16 answers)
Opened by odium at 2010-09-23 10:27

Linuxer
 2010-09-23 13:09
#141499 #141499
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Wenn ein System-Aufruf nicht ausgeführt wurde, sehe ich das durchaus als Fehler an.
Ob $! immer gesetzt ist, oder nicht, weiß ich nicht genau; aber bisher fuhr ich damit ganz gut.

Es wird auch in der perldoc -f system als Beispiel gezeigt.

Mein Test:
Code: (dl )
1
2
3
$ perl -wle 'system("not", "here") == 0 or die "failed with $?: $!\n";'
Can't exec "not": No such file or directory at -e line 1.
failed with -1: No such file or directory


Bei den Bit-Operation mit $? hast Du recht...

(edit:) Das perldoc-Beispiel (besonders schön, weil es alle benannten Fälle behandelt ;o)):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
if ($? == -1) {
  print "failed to execute: $!\n";
}
elsif ($? & 127) {
  printf "child died with signal %d, %s coredump\n",
  ($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
  printf "child exited with value %d\n", $? >> 8;
}


edits:
* fixed typos
* added perldoc example
Last edited: 2010-09-23 15:22:45 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Linux: Ausgabe von system() in Datei umleiten