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