1. 程式人生 > >嵌入式Linux學習筆記(三)檔案程式設計

嵌入式Linux學習筆記(三)檔案程式設計

一、系統呼叫-建立

int creat(const char *filename,mode_t mode)

filename:要建立的檔名(包含路徑,預設為當前路徑)
mode:建立模式
常見建立模式:
S_IRUSR 可讀 _>4
S_IWUSR 可寫 _>2
S_IXUSR 可執行 _>1
S_IRWXU 可讀、寫、執行 _>7

二、檔案描述
在Linux系統中,所有開啟的檔案都對應一個檔案描述。檔案描述的本質是一個非負整數。當開啟一個檔案時該整數由系統來分配。檔案描述的範圍是0-OPEN_MAX。早起的UNIX版本OPEN_MAX=19,即允許每個程序同事開啟20個檔案,現在很多系統將其增加到1024。
三、系統呼叫-開啟
int open(const char *pathname,int flags)
int open(const char *pathname,int flags,mode_t mode)
其中:
pathhome:要開啟檔案的檔名(包含路徑,預設為當前路徑)
flags:開啟標誌
常見的開啟標誌:
O_RDONLY 只讀方式開啟
O_WRONLY 只寫方式開啟
O_RDWR 讀寫方式開啟
O_APPEND 追加方式開啟
O_CREAT 建立一個檔案
O_NOBLOCK 非阻塞方式開啟

注意:開啟檔案函式的返回值即為檔案的檔案描述符

四、系統呼叫-關閉
當我們操作完檔案以後,需要關閉檔案:
int close(int fd)
fd:檔案描述符
五、系統呼叫-讀
int read(int fd,const void *buf,size_t length)
功能:從檔案描述符fd所指定的檔案中讀取length個位元組到buf所指向的緩衝區中,返回值為實際讀取的位元組數。
六、系統呼叫-寫
int write(int fd,const void *buf,size_t length)
功能:把length個位元組從buf指向的緩衝區中寫道檔案描述符fd所指向的檔案中,返回值為實際寫入的位元組數。
七、系統呼叫-定位

int lseek(int fd,offset_t,int whence)

功能:將檔案讀寫指標相對whence移動offset個位元組。操作成功時,返回檔案指標相對於檔案頭的位置。

whence可使用下述值:
SEEK_SET:相對檔案頭
SEEK_CUR:相對檔案讀寫指標的當前位置
SEEK_END:相對檔案末尾

offet可取負值,表示向前移動。例如如下呼叫可將檔案指標相對於當前位置向前移動5個位元組:
lseek(fd,-5,SEEK_CUR)

八、系統呼叫-訪問判斷

int access(const char*pathname,int mode)

pathname:檔名稱
mode:要判斷的訪問許可權。可以去以下值或者他們的組合。R_OK:檔案可讀,W_OK:檔案可寫,X_OK:檔案可執行,F_OK:檔案存在。

返回值:當測試成功,返回0,如果一個條件不符合,返回-1。

相關推薦

嵌入式Linux學習筆記檔案程式設計

一、系統呼叫-建立 int creat(const char *filename,mode_t mode) filename:要建立的檔名(包含路徑,預設為當前路徑) mode:建立模式 常見建立模式: S_IRUSR 可讀

嵌入式Linux學習筆記天(檔案程式設計)

                                                  嵌入式Linux學習筆記第三天           ——檔案程式設計                  嵌入式Linux檔案程式設計有兩種方式:系統呼叫和庫函式。常用的檔案

Linux學習筆記 putty、xshell運用

mage puttygen init for 下載 mkdir shell org c11 上一節學習了centos7的靜態ip配置,今天學習使用putty和xshell遠程連接centos7一.首先來學習使用putty1.下載putty包 https://www.chi

PHP學習筆記--檔案操作

下面通過一些簡單示例帶你瞭解PHP的檔案操作。 1、開啟及關閉檔案 resource fopen  ( string $filename  , string $mode  [, bool $use_include_path  = false 

Spring Boot學習筆記檔案上傳與訪問靜態檔案

檔案上傳 寫法和Spring MVC沒啥區別看起來 package org.test.Controll; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.we

Linux學習筆記:Ubuntu16.04系統安裝

在此,我選擇Ubuntu16.04進行Linux系統的學習。首先在官網上找到對應的映象檔案映象下載。https://www.ubuntu.com/download/desktop找一塊U盤進行系統盤的製作。https://jingyan.baidu.com/article/c

linux 自學筆記 檔案搜尋命令 和幫助命令

5 檔案搜尋命令 5.1檔案搜尋命令:which   /  whereis 命令名稱: which 命令所在路徑:/usr/bin/which 執行許可權:    所有使用者 功能描述:   顯示系統命令所在目錄  (which可以提供命令的別名,但whereis可以提供該

linux學習筆記--檔案和目錄管理

檔案系統架構 Linux檔案系統具有層級性 檔案或者目錄起始於根目錄“/”成為樹狀結構 最頂層由/開始 檔案和目錄名區分大小寫 路徑通過“/”分隔開 “..”表示上層目錄 “.”表示當前目錄 隱藏

Linux 學習筆記 檔案許可權

1. 粗略的結論 home is writable, but not outside 使用者在自己的主目錄是有寫許可權的,其它的地方則沒有 eg: 當不在使用者主目錄建立檔案的時候會報錯: 非要

嵌入式Linux學習筆記1

一、基本概念 1、檔案系統:對計算機資料的分類儲存。 2、檔案和目錄:對資料的一種分類。 3、/:(1)作根目錄名(處於開頭);(2)作分割符(不在開頭)。 4、路徑: (1)絕對路徑:從”/”目錄出發的路徑;如:/home/linux/截圖軟體。

linux學習筆記檔案操作命令

1.rm 命令 使用:rm [引數] 檔案 功能:刪除檔案 常用引數:          -v :顯示執行過程 -i:進行互動式的刪除 -r:遞迴的刪除檔案或目錄 如果rm命令不跟上-r則不能刪除目錄檔案 使用例項: rm -r v    /var/test 刪除var目錄

Linux學習筆記日常運維二

free一、iostat、freeiostat -x 磁盤使用rrqm/s: 每秒進行 merge 的讀操作數目。即 delta(rmerge)/swrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/sr/s: 每秒完成

Linux學習筆記十一日常運維

ifconfig一、linux網絡相關、 ifconfig ifconfig //查看網卡ip(yum install net-tools) ifup ens33/ifdown ens33 //開啟網卡,關閉網卡,只有一個網卡時,一旦關閉了網卡就會斷開遠程鏈接,只能去服務器主機重新打

Linux學習筆記十二iptables filter表案例、 iptables nat表應用

iptables filter表案例、 iptables nat表應用 一、iptables filter表案例需求:將80、20、21端口放行,對22端口指定特定的ip才放行以下為操作方法:vim /usr/local/sbin/iptables.sh //加入如下內容#! /bin/bas

Linux學習筆記十三iptables備份、firewalld

iptables備份;firewall一、保存和備份iptables規則 service iptables save //會把規則保存到/etc/sysconfig/iptables iptables-save > my.ipt // 把iptables規則備份到my.ipt文件中

Linux學習筆記4磁碟分割槽與檔案系統命令

    df 檢查檔案系統的磁碟空間佔用情況,引數-a列出全部目錄,引數-h按KB,MB,GB顯示 du   檢車某個目錄或者檔案佔用的磁碟空間,引數-s顯示佔用總空間,引數-sh統計目錄大小 mo

linux學習筆記2檔案管理

1. 建立 建立檔案 touch 檔名 舉例:touch file1 flie2 flie3… 新建目錄 mkdir 目錄名 舉例:mldir dir 建立遞迴目錄 mkdir -p 目錄名/目錄名/目錄名… 舉例:mkdir -p dir1/dir2/dir3 2. 刪除 刪除檔案

linux學習筆記5檔案許可權

檔案許可權 1.檔案許可權存在的意義 系統最底層安全設定方法之一 保證檔案可以被可用的使用者做相應操作 2.檔案許可權的檢視 ls -l file ls -ld dir ll file ll -d dir 3.檔案許可權的讀取 - |rw-rw-r--|

《自己動手寫java虛擬機器》學習筆記-----搜尋class檔案go

    專案地址:https://github.com/gongxianshengjiadexiaohuihui 我們都知道,.java檔案編譯後會形成.class檔案,然後class檔案會被載入到虛擬機器中,被我們使用,那麼虛擬機器如何從那裡尋找這些class檔案呢,jav

嵌入式核心及驅動開發之學習筆記 點燈實驗

完成應用程式通過驅動控制硬體的實現。實驗建立在之前的框架上,我們先實現使用者層與核心層之間的資料互動,驅動程式拿到使用者傳來的指令後,就可以執行點燈的動作了。   應用程式與驅動資料互動 對於驅動程式而言,使用copy_to_user 和 copy_from_user