Estoy probando este pequeño programa en Linux:
// foo.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n = system(argv[1]);
printf("%d\n", n);
return n;
}
No importa lo que se introduce en la línea de comandos, un echo $?
siempre imprime 0, por ejemplo:
$ ./foo anything
sh: anything: not found
32512
$ echo $?
0
Mi pregunta es: ¿Por qué no $?
toma el mismo valor que n
? También probé el programa en Win32, y echo %errorlevel%
da el mismo valor que n
. ¡Gracias!
Y pueden sólo reproducir el comportamiento cuando 'sistema()' se trata? (Se devuelve un valor negativo, ¿no? ¿Está esto definido en Linux?) –
Solo he visto este comportamiento con 'system()'. Si ejecuto './Anything' seguido de' echo $? ', La salida sería 127. – wdscxsj