Linux中ioctl函数简单介绍

来源:互联网 发布:美工从基础到高级 编辑:程序博客网 时间:2024/05/16 12:27

Linux系统编程中,对于给文件进行写操作,可用write函数:

write函数介绍:

头文件

#include <unistd.h>”

函数原型

ssize_t write(int fd,const void *buf,size_t count)

参数fd,使用open 函数打开文件之后返回的句柄。
参数*buf,需要写入的数据。
参数count,将参数*buf 中最多count 个字节写入文件中。
返回值为ssize 类型,出错会返回-1,其它数值表示实际写入的字节数


对于简单字符设备的IO口操作,使用write函数也是可以的,但是Linux提供了一个更加高效的ioctl函数:

所谓ioctl,即设备驱动程序中对设备的I/O通道进行管理的函数;

头文件

#include<unistd.h>

函数原型

int ioctl( int fd, int request, int cmd,,,)

参数fd,函数open 返回的句柄。
参数request 和参数cmd,由内核驱动决定具体操作,例如request 可以代表那个IO 口,
cmd 代表对IO 进行什么样的操作,也可以反过来。具体的含义由使用者在驱动中switch
决定。

返回值:返回0 成功;返回-1,出错


通过main 参数传过来的参数是char 字符格式的,如果要传递给ioctl 函数,需要用到数
值转化函数atoi:

头文件

#include <stdlib.h>

使用如:

ioctl(fd,atoi(argv[1]),atoi(argv[2]));






原创粉丝点击