Linux第八次學習筆記

2022-09-03 07:45:12 字數 2119 閱讀 6520

輸出操作是從主存拷貝資料到i/o裝置。

建立每個程序開始時三個開啟的檔案

改變當前的檔案位置

讀寫檔案

寫操作:

關閉檔案

#include #include #include int open(char *filename,int flags,mode_t mode)
open函式

o_wronly 以只寫方式開啟檔案

o_rdwr 以可讀寫方式開啟檔案。

上述三種旗標是互斥的,也就是不可同時使用,但可與下列的旗標利用or(|)運算子組合。

o_creat 若欲開啟的檔案不存在則自動建立該檔案。

o_trunc 若檔案存在並且以可寫的方式開啟時,此旗標會令檔案長度清為0,而原來存於該檔案的資料也會消失。

mode_t mode 檔案許可權標誌

1. s_irusr 所有者擁有讀許可權

2. s_iwusr 所有者擁有寫許可權

3. s_ixusr 所有者擁有執行許可權

4. s_irgrp 群組擁有讀許可權

5. s_iwgrp 群組擁有寫許可權

6. s_ixgrp 群組擁有執行許可權

7. s_iroth 其他使用者擁有讀許可權

8. s_iwoth 其他使用者擁有寫許可權

9. s_ixoth 其他使用者擁有執行許可權

檔案許可權標誌也可以用加權數字表示,這組數字被成為umask變數,它的型別是mode_t,是乙個無符號八進位制數。

書上例子解析:

#define def_mode s_iruser|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth //擁用者、群組、其他人都擁有讀寫許可權,相當於666

#define def_mask s_iwgrp|s_iwoth //使用者組、其他人擁有寫許可權,相當於022

umask(def_umask); //將當前的umask值設定成022

fd = open("foo.txt",o_creat|o_trunc|o_wronly,def_mode); //def_mode此時的值應該為def_mode &~def_umask,即666&~022=644,則檔案的擁有者有讀寫權利,所有其他的使用者只有讀權利。

返回值 若成功則為新檔案描述符,若出錯為-1。返回的描述符總是在程序中當前沒有開啟的最小描述符。

#include int close(int fd);
若省略fd,則將關閉open語句開啟的所有活動檔案。

#include ssize_t read(int fd,void *buf,size_t n);

#include sszize_t write(int fd,const void *buf,size_t n);
書上的源**僅為理論上講述的程式,說明了一次乙個位元組地從標準輸入拷貝到標準輸出的功能,但是並未有明顯的表示。所以我將**修改了,通過兩個檔案foo.txt與foo1.txt來體現該功能。

rio提供了兩類不同的函式:

ssize_t rio_readlineb(rio_t *rp,void *usrbuf,size_t maxlen);
對同一描述符,對rio_readlineb和rio_readnb的呼叫可以任意交叉進行,但不應該和無緩衝的rio_readn函式交叉使用。

巨集指令根據st_mode成員來確定檔案的型別

檔案表v-node表

標準i/o庫將乙個開啟的檔案模型化為乙個流。

每個ansi c程式開始時都有三個開啟的流stdin、stdout和stderr。

型別為file的流是對檔案描述符和流緩衝區的抽象。

1.《computer.systems.a.programmer's.perspective.2nd.cn》教材

2.《開啟檔案、新建檔案和關閉檔案操作》

3.《linux下的檔案操作函式》

4.《linux下的umask()函式》

第八次作業

練習題 1 怎麼查出通過 from xx import xx導 的可以直接調 的 法?在test package資料夾中建立 init py檔案,裡邊什麼都不需要編輯。在 中把test package的檔案的路徑加入到python直譯器可以搜尋到的路徑列表中,這裡就用到了python的包sys模組 ...

第八次作業

用python實現k均值演算法,鳶尾花花瓣長度資料做聚類並用散點圖顯示。import numpy as np 隨機生成乙個陣列 x np.random.randint 1,100,20,1 y np.zeros x.shape 0 dtype int k 3iris length 1.4,1.4,1...

第八次作業

問題 答案這個作業屬於那個課程 c語言程式設計ii 這個作業要求在 我在這個課程的目標是 更加熟練掌握markdown語法的相關用法 這個作業在那個具體方面幫助我實現目標 更加熟練的使用markdown,對本週知識總結 參考文獻 pta常見問題解析,c語言程式設計 1.pta實驗作業 1.1 求整數...