当我调用c读取函数时,perror函数告诉我它是一个未定义的错误:0。
这是由于错误而退出的代码片段:
if( read(fd,&head_data->npts,sizeof(int)) <= 0 )
{
perror("File read error in reading data\n");
exit(1);
}
head_data是一个结构,npts是该结构的int成员。
我查看了opengroup和linux手册页,但找不到有关未定义错误的任何信息。我不知道它是否有任何区别,但我正在Mac OS 10.9.5上编译和运行。
答案 0 :(得分:4)
答案 1 :(得分:1)
所以条件应该只是更新:
if( read(fd,&head_data->npts,sizeof(int)) < 0 )
{
perror("File read error in reading data\n");
exit(1);
}
答案 2 :(得分:0)
没有错误,这就是perror
报告&#34;未定义错误&#34;的原因。如果没有错误,请勿尝试致电perror
。您应该只调用perror
errno
不为零。您致电perror
,errno
为零。其余部分如下。
函数read
通过返回否定值来指示错误条件(设置errno
)。返回零并不表示错误情况。