如何检查system()结果

时间:2012-01-20 13:42:57

标签: c++ c windows system

我应该如何检查系统命令是否成功运行并且没有返回错误? 根据{{​​3}},有多个案例。我无法确定以下代码段是否正确。

char buffer[100];
int ret_val;
strcpy(buffer, "copy *.txt ");
strcat(buffer, path);
ret_val = system(buffer);
if(0 != ret_val)
{
  perror("There was an error");
}
else
{
  printf("The command was run successfully.");
}

返回值

如果command为NULL并且找到了命令解释器,则返回非零值。如果未找到命令解释程序,则返回0并将errno设置为ENOENT。如果command不为NULL,则系统返回命令解释程序返回的值。仅当命令解释器返回值0时,它才返回值0.返回值-1表示错误,并且errno设置为以下值之一:

2 个答案:

答案 0 :(得分:1)

要捕获所有案例,您还需要检查errno,如文档所述:

if (ret_val == 0 && errno == 0)
{
  printf("success!\n");
}

请在致电errno之前确保清除 system()

答案 1 :(得分:0)

由于system的参数不是NULL,所以你专注于那个非常简单的情况:-1system函数失败,否则返回代码实际命令。