0

就目前而言,代码如下所示:

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 比较陌生。

4

2 回答 2

2

您可以使用perror,也可以strerror(errno)在 Windows 上使用,两者都应该可以工作,这是后者的一个示例:

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

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

没有这样的文件或目录

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

于 2013-01-11T17:25:06.953 回答
1

据我所见,perror在 Windows 中也可以正常工作。你知道是否open失败(它返回了什么)以及如果它失败了,为什么在你的情况下它失败了?文件不存在还是权限问题?为什么要perror打印 4 次“无错误”消息?

功能是什么die- 据我所知它不是标准功能?打印错误消息有什么作用?

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

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

于 2013-01-11T17:00:54.670 回答