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,这个在下一片里面再讲。

Linux之设备操作相关推荐

  1. linux ioctl 设备操作函数 r3到r0 应用层 驱动层 通讯

    一.ioctl的简介: 虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数.如CD-ROM的驱动 ...

  2. linux硬件设备操作函数 open

    今天在写文件操作,需要使用open函数,功能是在文件后面追加写内容,当时写代码验证时总是没有追加写内容,发现其中文件操作的mode没写对,导致该问题 这是文件I/O的常用函数,open函数,open函 ...

  3. linux硬件设备操作函数 open(/dev/ietctl, O_RDWR|...)

    open(/dev/ietctl, O_RDWR) 这是文件I/O的常用函数,open函数,open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0 ...

  4. CAN总线在嵌入式Linux下驱动程序的实现

    引文出处:https://www.cnblogs.com/general001/articles/2342728.html 1引言 基于嵌入式系统设计的工业控制装置,在工业控制现场受到各种干扰,如电磁 ...

  5. Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来,Linux ...

  6. 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动

    基于 ARM 的嵌入式 Linux 移植真实体验( 4 ) ――设备驱动 宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 设备驱动程序是操作系 ...

  7. 嵌入式系统开发-学习路线

    嵌入式系统开发 课程链接 随着嵌入式设备的普及,嵌入式应用的需求量也随之增大,本课程将重点培养基于linux系统下的嵌入式应用开发,包括5个阶段,其中课程涵盖了linux系统下的多进程.多线程嵌入式开 ...

  8. 嵌入式 C/C++语言精华文章集锦

    C/C+语言 struct 深层探索 ............................................................................2 C++ ...

  9. Linux设备驱动之mmap设备操作

    1.mmap系统调用 void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); 功能:负责把文件内容 ...

最新文章

  1. mysql innodb 主键,Mysql InnoDB 引擎 主键性能
  2. Android selector
  3. .net 文件类型 及说明
  4. OpenCV2马拉松第22圈——Hough变换直线检測原理与实现
  5. Nginx 优化详解
  6. 程序员如何跳出35岁魔咒,史上最全思维图收集解救你
  7. api报错 javaee maven_JavaEE关于Maven的配置与学习
  8. linux的nice命令用法,nice命令详解
  9. 在JAVA中把JSON数据格式化输出到控制台
  10. c语言大学程序设计题库,c语言程序设计题库
  11. Android WebView 详细介绍
  12. 【疑难杂症】三步解决虚拟机启动失败,提示无法获取VMCI驱动程序的版本的问题
  13. maven项目关系依赖
  14. Unity 贴图Meta文件的探究
  15. PHP全国快递寄件接口,1天接入四通一达,极兔,宅急送,德邦,京东,天天
  16. JAVA字符串格式化-String.format()的使用总结
  17. volatility用法
  18. 关于test eax eax
  19. Mac Office 怎么设置单面打印
  20. 华硕AC86U路由器最佳设置(解决5G信号断流和米家设备掉线的问题)

热门文章

  1. java web atm机_Java项目实现模拟ATM机
  2. 2022年总结:道阻且长,行则将至
  3. 运营技巧|要如何提升用户留存率?
  4. 活码二维码(动态二维码)素材库管理教程
  5. 百度白皮书5.0解读如何合理设置展开全文功能
  6. 利用Python实现摄像头实时换脸
  7. PHP对接twitter三方登录-WEB版
  8. 英语单词词性顺口溜_巧记英语单词的顺口溜 这样记忆不枯燥
  9. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试
  10. 回忆过去,畅想未来--2016下