我试图从一个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:%s\n", head_read_len, eventHdr.name);
       lseek(ctx->fd, SEEK_CUR, -head_read_len);

}
笔记
struct inotify_event用于inotify系统调用,man inotify用于获取更多详细信息。
fd保证是有效的inotify文件描述符。
怎么了?有什么有价值的见解吗?

最佳答案

原因是:inotify系统调用的fd不能部分读取,否则返回“无效参数”!
使用足够大字节的缓冲区!

关于c - 读取失败,错误消息消息“无效参数”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23055682/

10-10 05:55