linux系统(3)调用失败 - 如何知道类似errno的错误代码?

时间:2011-10-01 10:08:17

标签: linux errno system-calls

当我用一些命令调用系统(char * Command)并且它失败时,我想知道错误代码(而不是解析文本输出)。 例如,我运行系统(“rm文件”)并且“文件”不存在 - 如何将ENOENT接收到我的应用程序中?

1 个答案:

答案 0 :(得分:4)

您只能这样做,命令显式返回该状态。

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

错误时返回的值为-1(例如fork(2)失败),以及   否则返回命令的状态。后者的返回状态是   以wait(2)中指定的格式。因此,退出代码   命令为WEXITSTATUS(status)

但是如果命令只是在出现问题时返回1,则调用者很难说出实际原因。