linux驅動開發常用命令

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章