当我用一些命令调用系统(char * Command)并且它失败时,我想知道错误代码(而不是解析文本输出)。 例如,我运行系统(“rm文件”)并且“文件”不存在 - 如何将ENOENT接收到我的应用程序中?
答案 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
,则调用者很难说出实际原因。