寒假學習 第
七、八天 (linux 高階程式設計) 筆記 小結
系統不允許程式直接訪問裝置和記憶體,但可以通過核心系統函式去訪問,系統對每個核心物件物件分配id號。
程式要訪問核心物件,只能通過id號來訪問。(申請得到乙個id ,在核心系統函式中使用id得到對應核心物件資料)。
使用函式傳遞乙個檔案,系統開啟檔案,返回給程式id號,程式通過id號來訪問檔案,通過id號來告訴系統釋放檔案。
( id:檔案描述符號.file description (fd) )
每個程式執行時 在/proc/ pid /fd / 下有三個 檔案描述符號
lrwx------ 1 root root 64 1月 22 21:41 0 -> /dev/pts/4
lrwx------ 1 root root 64 1月 22 21:41 1 -> /dev/pts/4
lrwx------ 1 root root 64 1月 22 21:41 2 -> /dev/pts/4
他們都指向當前終端
但一般預設
0:標準輸入
1:標準輸出
2:錯誤輸出
4.操作檔案描述符號
ssize_t write(int fd,
void *buf,//要寫入核心物件的資料
size_t size);//寫入資料大小
返回: >0 實際寫入的資料
-1 寫入錯誤
ssize_t read(int fd,
void *buf,//返回資料的空間
size_t size);//空間大小
返回: >0:實際讀取的資料
=0:碰到檔案結束符號eof (ctrl+d)
-1:讀取錯誤
通過 write 跟 read 來訪問
檔案型別
目錄檔案d普通檔案f
字元裝置檔案c
塊裝置檔案b
軟連線檔案l
管道檔案p
socket檔案s
許可權
rwx就不多說了s/s
用來當程式執行時有s設定所設定的許可權
2:組設定位 設定位向其他使用者開放擁有者許可權的許可權.使用者設定位
4:使用者設定位 設定位向其他使用者開放組使用者許可權的許可權.組使用者設定位
為什麼分大小寫見下面t/t中說的
t/t粘著位(只針對目錄有效)
粘著位:乙個檔案可讀寫的使用者並一定相讓他有刪除此檔案的許可權,如果檔案設定了t許可權則只用屬主和root有刪除檔案的許可權,通過chmod +t filename 來設定t許可權。
因為 顯示許可權時 t/t 要占用 x 許可權的位置 說以 用t 表示設定粘著位 並且 有 x 許可權,t表示設定粘著位但 沒有 有 x 許可權。
詳細的解釋
open函式與creat函式
int open(
const char *filename,//檔名
int flags,//open的方式[建立/開啟]
mode_t mode//許可權(只有建立的時候有效)
)
返回: >=0:核心檔案描述符號.
=-1:開啟/建立失敗
open的方式:
必選方式:o_rdonly o_wronly o_rdwr,必須選擇乙個
建立/開啟:o_creat
可選方式:
對建立可選方式:o_excl
組合:建立:
o_rdwr|o_creat
o_rdwr|o_creat | o_excl
開啟:
o_rdwr
o_rdwr|o_trunc
許可權:建議使用8進製數
關閉 void close(int fd);
列子:
寫入資料到stu.dat中去
#include#include#includestruct stu
;void input(struct stu* p_s)
int main()
system("clear");
} close(r);
}
讀取stu.dat 中的資料
#include#include#includestruct stu
;int main()
}
防止輸出被重定向
1 用isatty函式
int isatty(int fd) 用來判定檔案描述符號與終端的邦定關係
返回非0 fd輸出終端 ,返回0 fd輸出被重定向
2.可以用 /dev/tty
吧要輸出的東西輸出到 /dev/tty
學習linux的第七十八天
用docker compose部署服務 docker compose可以方便我們快捷高效地管理容器的啟動 停止 重啟等操作,它類似於linux下的shell指令碼,基於yaml語法,在該檔案裡我們可以描述應用的架構,比如用什麼映象 資料卷 網路模式 監聽埠等資訊。我們可以在乙個compose檔案中定...
寒假學習第八天
編寫獨立應用程式實現求平均值問題 每個輸入檔案表示班級學生某個學科的成績,每行內容由兩個字段組成,第乙個是學生 名字,第二個是學生的成績 編寫 spark 獨立應用程式求出所有學生的平均成績,並輸出到 乙個新檔案中。下面是輸入檔案和輸出檔案的乙個樣例,供參考。algorithm 成績 小明 92 小...
寒假學習 第11天 (linux 高階程式設計)
寒假學習 第11天 linux 高階程式設計 筆記 總結 cui字元介面,gui 圖形介面 curses就是cui的庫 老版本libcurses.so,新版本libncurses.so printf scanf 等標準io 大部分是 重定向到終端 dev tty dev pts 1,curses就是...