1

何らかのコマンドで system(char* Command) を呼び出して失敗した場合、エラー コードを知りたい (テキスト出力を解析しない) 必要があります。たとえば、system("rm file") を実行しましたが、'file' が存在しません。アプリケーションで ENOENT を受け取るにはどうすればよいですか?

4

1 に答える 1

4

これを行うことができるのは、コマンドがそのステータスを明示的に返す場合のみです。

rc = system(...);
if (rc != -1 && WIFEXITED(rc))
    printf("Terminated with status %d\n", WEXITSTATUS(rc));

返される値は、エラー (失敗など) の場合は -1 で fork(2)、それ以外の場合はコマンドのステータスが返されます。この後者の戻りステータスは、 で指定された形式ですwait(2)。したがって、コマンドの終了コードはWEXITSTATUS(status).

1しかし、何か問題が発生したときにコマンドが単純に戻る場合、呼び出し元が実際の理由を伝えるのは困難です。

于 2011-10-01T10:09:34.607 に答える