Почему $? всегда 0 после вызова system ()?

Я тестирую эту крошечную программу под 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;
}

Независимо от того, что вводится в командную строку, echo $? всегда выводит 0, например:

$ ./foo anything
sh: anything: not found
32512
$ echo $?
0

My вопрос: почему $? не принимает то же значение, что и n ? Я также тестировал программу под Win32, и echo% errorlevel% дает то же значение, что и n . Спасибо!

5
задан wdscxsj 23 December 2011 в 07:43
поделиться