sto testando questo piccolo programma sotto 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;
}
Non importa ciò che viene immessa nella riga di comando, un echo $?
stampa sempre 0, ad esempio:
$ ./foo anything
sh: anything: not found
32512
$ echo $?
0
La mia domanda è: perché $?
non ha lo stesso valore di n
? Ho anche testato il programma in Win32 e echo %errorlevel%
fornisce lo stesso valore di n
. Grazie!
E puoi solo riprodurre il comportamento quando 'sistema()' è coinvolto? (Viene restituito un valore negativo, no? È definito in Linux?) –
Ho visto questo comportamento solo con 'system()'. Se eseguo './Anything' seguito da' echo $? ', L'output sarebbe 127. – wdscxsj