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

linux系统(3)调用失败-如何知道类似errno的错误代码?,linux,errno,system-calls,Linux,Errno,System Calls,当我用某个命令调用系统(char*命令)但失败时,我想知道错误代码(而不是解析文本输出)。 例如,我运行系统(“rm文件”),但“文件”不存在-我如何才能将eNONT接收到我的应用程序中?只有在命令显式返回该状态时,才能执行此操作 rc = system(...); if (rc != -1 && WIFEXITED(rc)) printf("Terminated with status %d\n", WEXITSTATUS(rc)); 错误时返回的值为-1(例如,fo

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

只有在命令显式返回该状态时,才能执行此操作

rc = system(...);
if (rc != -1 && WIFEXITED(rc))
    printf("Terminated with status %d\n", WEXITSTATUS(rc));
错误时返回的值为-1(例如,
fork(2)
failed),并且 否则返回命令的状态。后一种返回状态为 按照
等待(2)
中指定的格式。因此,系统的退出代码 命令将是
WEXITSTATUS(status)


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

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

rc = system(...);
if (rc != -1 && WIFEXITED(rc))
    printf("Terminated with status %d\n", WEXITSTATUS(rc));
错误时返回的值为-1(例如,
fork(2)
failed),并且 否则返回命令的状态。后一种返回状态为 按照
等待(2)
中指定的格式。因此,系统的退出代码 命令将是
WEXITSTATUS(status)

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