Linux之设备操作

Linux系统的基本思路就是:一切都是文件,无论是里面存储的数据还是外接设备都是文件。

因此操作每一个设备都会有对应的文件描述符号,我们可以像操作文件一样操作它们,但注意与操作文件还是有区别的。

直接操作设备的函数:

_return int open(_in char* path, _in int flag);

_return int write(_in int fd, _in char* inputbuffer, _in bufferlen);

_return int read(_in int fd, _inout char* out, _in bufferlen);

打开设备、向设备中写数据、从设备中读数据。

设备的文件描述符是由系统自动分配的:

系统总线识别到设备--->获取设备信息--->匹配对应的设备驱动--->挂载设备。

如果你设备没挂载上,软件方面来讲绝大多数是驱动问题。


一般来讲write函数是非阻塞的,read函数是阻塞的。如果想将read变为非阻塞的,open打开设备时候要去添加O_NDELAY(或者O_NONBLOCK)。如果想将write变为阻塞,open打开设备时要加上O_SYNC(或者O_DSYNC)标志。

另外还有一个标志是操作设备时常用的就是O_NCTTY,这个标志的意义就是让不将终端设备的文件描述符当做终端设备来操作。

向设备写数据:

in device = open("/dev/tty0", O_DSYNC|O_WRONLY|O_NCTTY);

write(device, "fuck", 4);

从设备读数据:

char buffer[1024]=""; //初始化全置为空

in device = open("/dev/tty0", O_NDELAY|O_RDONLY|O_NCTTY);

read(device,  buffer, 1024);


这些是数据处理的操作(读、写),还有两个常用到的用于获取设备信息的函数fcntl和ioctl,这个在下一片里面再讲。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值