Gmong has asked for the wisdom of the Perl Monks concerning the following question:
This question is somewhat related to Capturing stdout and segfault of a program.
In general, I am trying to use a perl script to execute and detect whether a program segfaults or not. The interesting thing is shown in the code snippet below:
#!/usr/bin/perl -w $command = $ARGV[0]; my $execOne = "$command"; my $execTwo = "$command &> log "; # Executing ExecOne eval { system($execOne); }; if ($? & 127) { $segval = $? & 127; print "ExecOne Seg: $segval\n"; } else { print "ExecOne: No fault\n"; } # Executing ExecTwo eval { system($execTwo); }; if ($? & 127) { $segval = $? & 127; print "ExecTwo Seg: $segval\n"; } else { print "ExecTwo: No fault\n"; }
Executing the above script with a known program that segfaults gives the following output
Does anyone else find this strange?ExecOne Seg: 11 ExecTwo: No fault
So my question boils down to why does redirecting the output change the $? value to the extent that the seg fault can no longer be detected?
Is there simply something wrong in my code?
If anyone could shed some light on the matter, it will be greatly appreciated.
Thanks in advance Monks.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Different values when using $? to detect seg faults
by VSarkiss (Monsignor) on Mar 08, 2005 at 01:27 UTC | |
by graff (Chancellor) on Mar 08, 2005 at 04:11 UTC | |
by jpeg (Chaplain) on Mar 08, 2005 at 01:37 UTC | |
|
Re: Different values when using $? to detect seg faults
by Zaxo (Archbishop) on Mar 08, 2005 at 04:21 UTC |