读取失败,错误消息“无效参数”

时间:2014-04-14 08:44:36

标签: c linux file io

我尝试从一个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);

}

备注:

  1. struct inotify_event用于inotify系统调用,man inotify了解更多详情。

  2. fd保证是有效的inotify文件描述符。

  3. 似乎有什么问题?有价值的见解吗?

1 个答案:

答案 0 :(得分:3)

原因是:inotify系统调用的fd不能被部分读取。否则,它将返回"无效的参数"!

使用具有足够大字节的缓冲区!