最近在學習嵌入式應用程式設計,這裡用來記錄一些學習筆記,希望對自己有所幫助!
檔案模式是檔案屬性之一,佔16bit
訪問許可權佔9bit,即rwx-rwx-rwx,修飾位佔3bit,檔案型別佔4bit
命令:umask設定新建檔案的許可權,umask是新建立檔案、目錄應關閉許可權的位掩碼
命令:chmod修改檔案許可權
int creat(const char *filename, mode_t mode)
成功返回fd, 失敗返回-1
filename:要建立的檔名(包含路徑,預設為當前路徑)
mode:建立模式(s_irusr-可讀,s_iwusr-可寫,s_ixusr-可執行,s_irwxu-可讀、寫、執行等模式),可以通過man creat檢視幫助
1 #include
2 #include
3 #include 45
intmain
(void)6
14printf
("file descriptor is %d\n"
, fd);15
close
(fd);16
return0;
17}
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include 78
intmain
(void)9
17printf
("fd = %d\n"
, fd);18
close
(fd);19
return0;
20}
int close(int fd)
成功返回0,失敗返回-1
int read(int fd, void *buf, size_t length)
功能:從檔案描述符fd所指定的檔案中讀取length個位元組到buf所指向的緩衝區中,返回值為實際讀取的位元組數。
返回讀取到的字元數,錯誤返回-1,讀到檔案末尾返回0
int write(int fd, void *buf, size_t length)
功能:把length個位元組從buf指向的緩衝區中寫到檔案描述符fd所指向的檔案中,返回值為實際寫入的位元組數。
返回寫入的字元數,錯誤返回-1,讀到檔案末尾返回0
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include 89
intmain
(void)10
20memset
(buf,0,
sizeof
(buf));
21 readnum =
read
(fd, buf,
1024);
22if
(readnum <0)
2327
else
if(readnum >0)
2831
close
(fd);32
return0;
33}
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include 78
intmain
(void)9
19memset
(buf,0,
sizeof
(buf));
20strcpy
(buf,
"how do you do");
21 writenum =
write
(fd, buf,
strlen
(buf));
22if
(writenum <0)
2327
28close
(fd);29
return0;
30}
int lseek(int fd, offset_t offset, int whence)
功能:將檔案讀寫指標相對whence移動offset個位元組,操作成功時,返回檔案指標相對於檔案頭的位置。
whence可使用下述值:
seek_set-相對檔案開頭,seek_cur-相對檔案讀寫指標的當前位置,seek_end-相對檔案末尾
offset可取負值,表示向前移動,例如:lseek(fd, -5, seek_cur),可將檔案指針對當前位置向前移動5個位元組。
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include 78
intmain
(void)9
19memset
(buf,0,
sizeof
(buf));
20strcpy
(buf,
"this is my file to test lseek");
21 writenum =
write
(fd, buf,
strlen
(buf));
22if
(writenum <0)
2327
lseek
(fd,5,
seek_set);
2829
memset
(buf,0,
1024);
30 readnum =
read
(fd, buf,
sizeof
(buf));
31if
(readnum <0)
3236
else
if(readnum ==0)
3740
else
4144
close
(fd);45
return0;
46}
如何利用lseek來計算檔案長度?
由於lseek函式的返回值為檔案指標相對於檔案頭的位置,因此下面呼叫的返回值就是檔案的長度:
lseek(fd, 0, seek_end)
int access(const char *pathname, int mode)
功能:判斷檔案是否可以進行某種操作(讀、寫等)
pathname:檔名稱
mode:要判斷的訪問許可權,可以取一下值或組合:r_ok-檔案可讀,w_ok-檔案可寫,x_ok-檔案可執行,f_ok-檔案存在
返回值:成功時,函式返回0,否則如果乙個條件不符時,返回-1
1 #include
2 #include
3 #include
4 #include 56
intmain
(void)7
14else
1518
return0;
19}
嵌入式應用開發學習筆記 高階IO
檔案鎖分為建議性鎖和強制性鎖 記錄鎖又可分為讀取鎖和寫入鎖 int fcntl int fd,int cmd int fcntl int fd,int cmd,long arg int fcntl int fd,int cmd,struct flock lock 返回值 成功0,出錯 1,錯誤原因存...
嵌入式 檔案IO的學習
用 實現linux中cp複製的功能 include stdio.h include unistd.h include fcntl.h include string.h intmain int argc,char ar int argc是記錄你在命令列敲入的字串個數,char ar 是存放你寫入是字串...
嵌入式開發學習
始於興趣,因興趣而精緻 對於很多人聽到嵌入式這個詞的時候,會感覺到有些迷茫,嵌入式到底和常見的硬體電路學習,軟體程式設計,物聯網等有什麼區別?學習嵌入式到底按照怎樣的乙個思路才能最快的進入狀態,領略嵌入式之美,怎樣才能正確進行興趣匹配實現自己的學習目標。接下來,就讓我簡單的介紹一下我對嵌入式學習的理...