linux系統程式設計學習筆記

2021-10-09 04:37:20 字數 3107 閱讀 3020

關閉檔案

linux命令列引數解析

int

creat

(const

char

*filename,mode_t mode)

;/*mode指定新建檔案的訪問許可權 */

//return 檔案描述符fd

open

(const

char

*pathname,o_create,mode_t mode)

;/*第二個引數flags為o_create*/

//return 返回檔案描述符fd

除了在建立檔案時設定許可權外,還可以使用函式修改

int

umask

(int newmask)

;

檔案許可權可以設定為:

除了可以通過上述巨集進行「或」邏輯產生標誌以外,我們也可以自己用數字來表示,linux用5個數字來表示檔案的各種許可權:第一位表示設定使用者id;第二位表示設定組id;第三位表示使用者自己的許可權位;第四位表示組的許可權;最後一位表示其他人的許可權。每個數字可以取1(執行許可權)、2(寫許可權)、4(讀許可權)、0(無)或者是這些值的和。例如,要建立乙個使用者可讀、可寫、可執行,但是組沒有許可權,其他人可以讀、可以執行的檔案,並設定使用者id位,那麼應該使用的模式是1(設定使用者id)、0(不設定組id)、7(1+2+4,讀、寫、執行)、0(沒有許可權)、5(1+4,讀、執行)即10705。

int

open

(const

char

*pathname,

int flags)

;//return 檔案描述符fd

常用flags:

flags

含義o_rdonly

以唯讀方式開啟

o_wronly

以只寫方式開啟

o_rdwr

可讀寫以追加方式開啟

int

read

(int fd,

const

void

*buf, size_t length)

;int

write

(int fd,

const

void

*buf, size_t length)

;//引數buf為指向緩衝區的指標,length為緩衝區的大小(以位元組為單位)

//return 讀取的位元組數(read),寫入的位元組數(write)

int

lseek

(int fd, offset_t offset,

int whence)

;/*whence 為絕對位置可選引數為:

seek_set:檔案開頭

seek_cur:當前讀寫指標位置

seek_end:檔案末尾

offset為相對whence的偏移位元組數。*/

int

close

(int fd)

;

在linux中,經常需要各種命令,通常情況下都會帶各種引數,而這些引數是如何解析的呢?通常使用gnu c提供的函式getopt、getopt_long、getopt_long_only函式來解析命令列引數。

命令列引數可以分為兩類,一類是短選項,一類是長選項,短選項在引數前加一槓"-",長選項在引數前連續加兩槓"–",如ls 命令引數,其中-a,-a,-b都表示短選項,–all,–almost-all, --author都表示長選項。他們兩者後面都可選擇性新增額外引數。比如–block-size=size,size便是額外的引數。

getopt函式只能處理短選項,而getopt_long函式兩者都可以,可以說getopt_long已經包含了getopt_long的功能。因此,這裡就只介紹getopt_long函式。而getopt_long與getopt_long_only的區別很小,等介紹完getopt_long,在提起會更好。

#include

extern

char

*optarg;

extern

int optind, opterr, optopt;

#include

intgetopt

(int argc,

char

*const ar**,

const

char

*optstring)

;int

getopt_long

(int argc,

char

*const ar**,

const

char

*optstring,

const

struct option *longopts,

int*longindex)

;int

getopt_long_only

(int argc,

char

*const ar**,

const

char

*optstring,

const

struct option *longopts,

int*longindex)

;

引數以及返回值介紹(以上三個函式都適用):

argc和ar**和main函式的兩個引數一致。

optstring: 表示短選項字串。

形式如「a?️?「,分別表示程式支援的命令列短選項有-a、-b、-c、-d,冒號含義如下:

(1)只有乙個字元,不帶冒號——只表示選項, 如-c

(2)乙個字元,後接乙個冒號——表示選項後面帶乙個引數,如-a 100

(3)乙個字元,後接兩個冒號——表示選項後面帶乙個可選引數,即引數可有可無,如果帶引數,則選項與引數直接不能有空格

形式應該如-b200

3、longopts:表示長選項結構體。結構如下:

Linux學習過程筆記 系統程式設計

0.系統程式設計所學到的命令是應用在notepad 中的,之前那學的linux命令列是在控制終端裡除錯用的。1.製作最小linux映象太麻煩以後學習。3.用u盤除錯程式。1.在root home 新建linuxsystemcode 新建功能名資料夾。2.連好超級終端,新建.c檔案,用notepad ...

linux系統程式設計筆記 程序

使用者許可權以及組許可權 system 程序會計 程序時間 守護程序 系統日誌 型別 pid t include include include include intmain else getchar printf pid d end n getpid return0 include includ...

系統程式設計 學習筆記 01

是指編譯好的二進位制檔案,在磁碟上,不占用系統資源 cpu 記憶體 開啟的檔案 裝置 鎖 是乙個抽象的概念,與作業系統原理聯絡緊密。程序是活躍的程式,占用系統資源。在記憶體中執行。同乙個程式也可以載入為不同的程序 彼此之間互不影響 環境變數,是指在作業系統中用來指定作業系統執行環境的一些引數。通常具...