您的位置:首页 > 运维架构 > Linux

linux驱动开发常用命令

2016-11-06 18:36 225 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux-常用函数