fstat() return 0,文件大小为 0,错误号为 11
fstat() return 0, with file size 0 and errno 11
我正在我的代码中尝试以下操作:-
{
int y,n_bytes;
struct stat temp_data;
y = fstat(netdev->queue_fd[class_id],&temp_data);
printf("Success - %d , size -> %lld , Error- %d \n",y,temp_data.st_size,errno);
n_bytes = write(netdev->queue_fd[class_id],buffer->data,buffer->size);
y = fstat(netdev->queue_fd[class_id],&temp_data);
printf("After write Success - %d , size -> %lld , Error- %d and the value of n_bytes is - %d ",y,temp_data.st_size,errno,n_bytes);
}
我得到的输出是:-
Success - 0, size -> 0 , Error - 11
After write Success - 0, size -> 0, Error - 11 and the value of n_bytes is - 1526
大小为 0 且错误编号为 11 的原因是什么??
还有其他方法可以获取文件的大小吗??
注意:这里Netdev->queue_fd[class_id]
是一个文件描述符。
n_bytes 的值在不同的调用中在 {41,1514,66,..} 之间变化。 (始终大于 0)
谢谢
成功后errno
的状态无关紧要。 errno
的值仅在失败时修改。 fstat()
return 归零,所以 errno 的值无关紧要。
write()
return是什么意思?您没有检查,所以您不知道 write()
调用后文件应该更大。
Netdev->queue_fd[class_id]
是
的文件描述符
- 普通文件或
- 任何 sys/fs 条目或
- Char/Block/Network设备文件?
如果它不是一个普通文件那么它的大小将不会在写入命令后更新。
通过S_ISREG()
检查文件类型
我正在我的代码中尝试以下操作:-
{
int y,n_bytes;
struct stat temp_data;
y = fstat(netdev->queue_fd[class_id],&temp_data);
printf("Success - %d , size -> %lld , Error- %d \n",y,temp_data.st_size,errno);
n_bytes = write(netdev->queue_fd[class_id],buffer->data,buffer->size);
y = fstat(netdev->queue_fd[class_id],&temp_data);
printf("After write Success - %d , size -> %lld , Error- %d and the value of n_bytes is - %d ",y,temp_data.st_size,errno,n_bytes);
}
我得到的输出是:-
Success - 0, size -> 0 , Error - 11
After write Success - 0, size -> 0, Error - 11 and the value of n_bytes is - 1526
大小为 0 且错误编号为 11 的原因是什么?? 还有其他方法可以获取文件的大小吗??
注意:这里Netdev->queue_fd[class_id]
是一个文件描述符。
n_bytes 的值在不同的调用中在 {41,1514,66,..} 之间变化。 (始终大于 0)
谢谢
成功后
errno
的状态无关紧要。errno
的值仅在失败时修改。fstat()
return 归零,所以 errno 的值无关紧要。write()
return是什么意思?您没有检查,所以您不知道write()
调用后文件应该更大。
Netdev->queue_fd[class_id]
是
- 普通文件或
- 任何 sys/fs 条目或
- Char/Block/Network设备文件?
如果它不是一个普通文件那么它的大小将不会在写入命令后更新。
通过S_ISREG()