in reply to Why doesn't 'system' return '-1' when a program fails to start on Windows?

http://perldoc.perl.org/perlvar.html

$CHILD_ERROR
$?

The status returned by the last pipe close, backtick (`` ) 
command, successful call to wait() or waitpid(), or from the 
system() operator. This is just the 16-bit status word 
returned by the traditional Unix wait() system call (or else 
is made up to look like it). Thus, the exit value of the 
subprocess is really ($?>> 8 ), and $? & 127 gives which 
signal, if any, the process died from, and $? & 128 reports 
whether there was a core dump.
#!perl -w use strict;use warnings; my $rc=system 'jxdDoesNotExist'; print 'rc:'.$rc."\n"; ec($?); print '$?:'.$?."\n"; print '$!:'.$!."\n"; print '$^E:'.$^E."\n"; print "\n\ntry2\n"; my $rc2=system {'jxdDoesNotExist'} 'jxdDoesNotExist'; print 'rc:'.$rc2."\n"; ec($?); print '$?:'.$?."\n"; print '$!:'.$!."\n"; print '$^E:'.$^E."\n"; sub ec { my $x=shift; print '>>8 :'.($x>>8)."\n"; print '&127:'.($x & 127)."\n"; print '&128:'.($x & 128)."\n"; }
result:
'jxdDoesNotExist' is not recognized as an internal or external command +, operable program or batch file. rc:256 >>8 :1 &127:0 &128:0 $?:256 $!:No such file or directory $^E: try2 Can't spawn "cmd.exe": No such file or directory at rc.pl line 12. rc:65280 >>8 :255 &127:0 &128:0 $?:65280 $!:No such file or directory $^E:The system cannot find the file specified
so what is 255?
Net helpmsg 255
result
The extended attributes are inconsistent.
https://www.kapilarya.com/fix-the-extended-attributes-are-inconsistent-error-in-windows-10 FIX 2 – Via Windows Default Sound Scheme This might sound quite strange but from past experiences, users have found that if your sound scheme is not set to default, this issue may occur. Also if you’re using any third-party tool related to sound, uninstall it and make sure you’ve set Windows sound scheme to default one: Thats a strange one....

Replies are listed 'Best First'.
Re^2: Why doesn't 'system' return '-1' when a program fails to start on Windows?
by huck (Prior) on Feb 24, 2017 at 02:21 UTC

    http://perldoc.perl.org/perlport.html#system Failure to spawn() a subprocess is indicated by setting $? to "255 << 8" i think that is where 65280 is coming from, but i still like "fix 2", that wasnt the only place i found that fix proposed.

      http://perldoc.perl.org/perlport.html#system Failure to spawn() a subprocess is indicated by setting $? to "255 << 8"

      I definitely missed that. Seems like an odd choice for a sentinel value, though. I'm surprised '-1' wasn't used for consistency.