linux驱动开发常用命令

版权声明:学习记录,积少成多 https://blog.csdn.net/changliang7731/article/details/53055667

1.READ

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);

描述
read() 从文件描述符 fd 中读取 count 字节的数据并放入从 buf 开始的缓冲区中.
如果 count 为零,read()返回0,不执行其他任何操作. 如果 count 大于SSIZE_MAX,那么结果将不可预料.

返回值
成功时返回读取到的字节数(为零表示读到文件描述符), 此返回值受文件剩余字节数限制.当返回值小于指定的字节数时并不意味着错误;这可能是因为当前可读取的字节数小于指定的字节数(比如已经接近文件结尾,或者正在从管道或者终端读取数据,或者 read()被信号中断). 发生错误时返回-1,并置 errno 为相应值.在这种情况下无法得知文件偏移位置是否有变化.


2.WRITE

#include <unistd.h> 
ssize_t write(int fd, const void *buf, size_t count); 

描述
write 向文件描述符 fd 所引用的文件中写入从 buf 开始的缓冲区中 count 字节的数据. POSIX规定,当使用了write()之后再使用 read(),那么读取到的应该是更新后的数据. 但请注意并不是所有的文件系统都是 POSIX兼容的.
返回值
成功时返回所写入的字节数(若为零则表示没有写入数据). 错误时返回-1,并置errno为相应值. 若count为零,对于普通文件无任何影响,但对特殊文件将产生不可预料的后果.


3.OPEN

#includ e <sys/types.h>#include <sys/stat.h>#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode)
int creat(const char *pathname, mode_t mode);

open() 通常 用于将路径名 转换为一个文件描述符 (一个 非负的 小 整数, 在 read , write 等 I/O操作中 将会被使用). 当 open() 调用 成功, 它会 返回 一个 新的 文件描述符 (永远取 未用 描述符的 最小值). 这个调用 创建 一个新的打开文件, 即 分配 一个 新的 独一无二的 文件描述符, 不会与 运行中的 任何 其他程序 共享 (但 可以 通过 fork (2) 系统调用 实现 共享). 这个 新的 文件描述符 在其后 对 打开文件操作 的函数中使用.


4.CLOSE

#include <unistd.h>
int close(int fd);

close 返回 0 表示 成功 , 或者 -1 表示 有 错误 发生 .


5.sscanf()

       #include <stdio.h>

       int scanf(const char *format, ...);
       int fscanf(FILE *stream, const char *format, ...);
       int sscanf(const char *str, const char *format, ...);

       #include <stdarg.h>

       int vscanf(const char *format, va_list ap);
       int vsscanf(const char *str, const char *format, va_list ap);
       int vfscanf(FILE *stream, const char *format, va_list ap);

str:源字符串
format:格式化输入控制符
int sscanf(const char *buffer,const char *format,[argument ]…);
将buffer里面的内容按照 指定 format的格式输入到 argument里面去.
成功则返回参数数目,否则返回-1.
sscanf(“1 2”,”%d %d %d”,buf1, buf2, buf3); 成功调用返回值为2,即只有buf1,buf2成功转换,buf1,buf2代表地址

支持集合操作:
%[a-z] 表示匹配a到z中任意字符
%[aB’] 匹配a,B,’ 中一员
%[ ^a ] 匹配非a的任意字符,并且停止读入
与scanf不同的是,同是格式化输入函数,scanf的输入源是键盘,sscanf的输入源是给定的字符串.
第二个参数可以是一个或多个 {%[*] [width] [{h | I | I64 | L}]type | ’ ’ | ‘\t’ | ‘\n’ | 非%符号}

1、 * 亦可用于格式中, (即 %d 和 %*s) 加了星号 () 表示跳过此数据不读入. (也就是不把此数据读入参数中)
2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
3、width表示读取宽度。
4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。
5、type :这就很多了,就是%s,%d之类。
6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值
失败返回0 ,否则返回格式化的参数个数


6.

猜你喜欢

转载自blog.csdn.net/changliang7731/article/details/53055667