在定时器fd上执行lseek时出错

时间:2014-03-05 19:30:08

标签: c posix flush

这篇文章:

Empty or "flush" a file descriptor without read()?

,表示可以在你不想读取的fd上执行lseek(),从而避免不必要的复制,但这不适用于我使用timerfd_create()创建的fds。为什么会如此,是否存在解决方法(使用read()除外)。

我尝试像这样lseek()

lseek(fd, 0, SEEK_END);

strerror()返回Illegal seek。同样,read(fd, buffer, 8)有效。

1 个答案:

答案 0 :(得分:1)

timer_fd不可寻求。不是每个fd都是。使用read读取相关字节。

请注意,与POSIX标记相反,这些调用是特定于Linux的。从手册页:

CONFORMING TO
       These system calls are Linux-specific.