如何在Windows中改进此C打开调用的错误报告?

时间:2013-01-11 16:54:13

标签: c windows file-io

现在代码看起来像这样:

fd = open(filename, openflag, perm);

然后我在打开时调用perror并接收

open: No error
open: No error
open: No error
open: No error

最后的错误调用是:

die(1, "open_fds: File open error");

屈服

SIO_ERROR: open_fds: File open error

如何获取更有意义的错误消息?

注意:这适用于Windows环境,而且我对C来说比较新。

2 个答案:

答案 0 :(得分:2)

你可以使用perror,或者你可以在Windows上使用strerror(errno),两者都可以使用,这是后者的一个例子:

int fd = open("some_made_up_file_name.txt", O_RDONLY);
if(fd < 0)
    printf("%s\n", strerror(errno));

在这种情况下,我会得到:

  

没有这样的文件或目录

因为我试图打开的那个文件不存在,在这种情况下我没有告诉它创建。您需要确保从open()< 0检查退货,并且您遇到了问题。

答案 1 :(得分:1)

据我所见,perror在Windows中运行良好。 你知道open是否失败了(它返回了什么)&amp;如果确实失败了,为什么在你的情况下失败?该文件不存在还是权限问题?为什么perror打印“无错误”消息4次?

什么是die函数 - 据我所知它不是标准函数?它如何打印错误消息?

在Windows上,您还可以使用GetLastError来获取错误。 (errnoperror除外)。

您可以使用FormatMessage格式化与GetLastError返回的错误代码对应的错误消息。