:
// 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
私の質問は:なぜ$?
はn
と同じ値になりませんか?また、Win32でプログラムをテストしたところ、echo %errorlevel%
はn
と同じ値を示します。ありがとう!
を参照して、終了ステータスとして認識され、 'システム()'関与しているときにのみ動作を再現することができますか? (負の値が返されていますか?それはLinuxで定義されていますか?) –
この現象は 'system()'でしか見られませんでした。 '。/ anything'の後に' echo $? 'を実行すると、出力は127になります。 – wdscxsj