打印

llseek函数应用问题

[复制链接]
7937|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shell507|  楼主 | 2011-10-20 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在学习写一个linux下的驱动和应用程序
read() write()ioctl()都没问题,但是调用llseek()就是进不去

驱动模块:
。。。。。。
static loff_t TEST_llseek(struct file *s_file,loff_t offset,int fromwhere)
{
    printk("<k>entry llseek\n");
    return 0;
}
ssize_t TEST_write(struct file *s_file, const char *s_buffer, size_t s_size,
        loff_t *s_loff)
{
    printk("<k>entry write\n");
    return 0;
}
static struct file_operations TEST_fops=
{
    ioctl : TEST_ioctl,
    llseek: TEST_llseek,
    write : TEST_write,
    read  : TEST_read,
};

应用程序:
void main()
{
  。。。。
    if((fd=open("/dev/TEST",O_RDWR))==-1)
    {
        perror("open eror!!!\n");
        exit(1);
    }
    else
        printf("open ok!!!\n");
    while(1)
    {
        i=llseek(fd,0,0);
        printf("i is %d\n",i);
        write(fd,buffer,BYTEn);
        sleep(1);
     }
}

   
运行后,write能够正确输出(read,ioctl也没问题),可就是没有llseek后的打印信息,
并且输出“i is -1”,这说明根本没正确进入,否则的话只能返回0.
哪位高手能够指点一下,为什么不能调用llseek,怎么才能正确实现?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝