jestem testowania tego małego programu pod Linuksem:
// 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;
}
Bez względu na to, co jest wprowadzany do linii poleceń, echo $?
zawsze drukuje 0, np:
$ ./foo anything
sh: anything: not found
32512
$ echo $?
0
Moje pytanie brzmi: Dlaczego nie ma wartości $?
ma tę samą wartość, co n
? Przetestowałem także program pod Win32, a echo %errorlevel%
daje tę samą wartość, co n
. Dzięki!
I można tylko odtworzyć zachowanie podczas 'System()' jest zaangażowany? (Zwracana jest wartość ujemna, czyż nie? Czy jest to zdefiniowane w Linuksie?) –
Widziałem to zachowanie tylko z 'system()'. Jeśli wykonam './Coś', po którym następuje' echo $? ', Wynik będzie 127. – wdscxsj