1. 程式人生 > >Linux系統程式設計--檔案(一)

Linux系統程式設計--檔案(一)

1.系統程式設計

系統呼叫:應用程式同系統之間的介面。由作業系統實現提供的所有系統呼叫所構成的集合即程式介面或程式設計介面。
封裝系統呼叫:更加方便程式設計師使用,跨平臺。
百度
這個概念看書時候第一次遇到,百度了一下,看完只能說是有了一個模糊的概念。封裝系統呼叫的理解就更不是特別清晰。

2.Llinux的檔案結構

Llinux作業系統是以檔案為基礎而設計的,Llinux的檔案子系統主要用於管理檔案儲存空間的分配,檔案訪問許可權的維護,對檔案的各種操作。使用者可使用命令對檔案進行操作;程式設計師可以使用系統呼叫或C語言的庫函式對檔案進行操作。

一般linux發行版本都含有以下目錄

/bin
/boot Linux
/dev
/etc
/home
/lib
/proc
/root
/sbin
/tmp
/usr
/var

3.Linux的檔案系統模型

(這部分是概念,自己沒有了解過,所以寫下來)

a.資料儲存在物理磁碟上,作業系統通過檔案系統可以對磁碟上的檔案進行管理。對物理磁碟的訪問是通過裝置驅動程式進行的,對裝置驅動的訪問有兩種途徑:1.通過裝置驅動本身提供的介面;2.通過虛擬檔案系統(Virtual File System, VFS)提供給上層應用系統的介面。

b.VFS是虛擬的,不存在的,只存在於記憶體而不存在於磁碟,即只有在系統執行起來以後才存在。VFS提供一種機制,將各種不同的檔案系統整合在一起,並提供統一的API供上層的應用程式使用。

4.檔案的訪問許可權控制

mode

r:4
w:2
x:1

實現簡化版的chmod命令
my_chmod.c

a.之前看鳥哥的時候接觸到了chmod,只知道用它修改許可權,這次是瞭解了這個函式,還接觸到了fchmod這個函式.

#include<sys/types.h>
#include<sys/stst.h>
int chmod(const char *path, mode_t mode);
int
fchomd(int fildes, mode_t mode);

chmod與fchmod的區別
chmod以檔名作為第一個引數,fchmod以檔案描述符作為第一個引數,目前我所理解這個檔案描述符需要open之類開啟檔案得到返回值。

b.利用chmod函式實現了一個簡單的chmod命令,遇到了一個新函式atoi (ascii to integer)將字串轉換成整形數

#include<stdlib.h>
int atoi (const char *nptr)

如atoi(“777”)的返回值是整型數777.