我试图从一个fd中读取一些数据,但失败了,错误消息为"无效参数!"。
struct inotify_event eventHdr;
int head_read_len = (int)read(ctx->fd, (void *)&eventHdr, sizeof(inotify_event));
if(head_read_len == -1){
_debug("read eventHdr failed!!!!n");
perror("read eventHdr!"); //Print "Invalid argument."
}
else{
_debug("read eventHdr succeed!!!!, head_read_len:%d, name:%sn", head_read_len, eventHdr.name);
lseek(ctx->fd, SEEK_CUR, -head_read_len);
}
注意:
struct inotify_event
用于inotify系统调用,man inotify了解更多详细信息。fd
保证是一个有效的inotify文件描述符。
问题出在哪里?有什么有价值的见解吗?
原因是:inotify系统调用的fd无法部分读取。否则,它将返回"无效参数"!
使用足够大字节的缓冲区!