现在代码看起来像这样:
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来说比较新。
答案 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来获取错误。 (errno
和perror
除外)。
您可以使用FormatMessage格式化与GetLastError返回的错误代码对应的错误消息。