2018-2019-1 20165330 《信息安全系統設計基礎》第六周學習總結
阿新 • • 發佈:2018-11-04
總結 系統調用 shel http 層次 內容 讀寫文件 sed end
學習目標
- 了解系統調用及錯誤處理方法
- 理解IO處理及文件系統
- 掌握Unix/Linux系統級I/O:
open
close
read
write
seek
stat
- 掌握
I/O
重定向的方法
學習內容
Linux I/O
Linux I/O
:將設備優雅地映射為文件的方式,允許Linux內核引出一個簡單、低級的應用接口- 輸入輸出執行方式:
- 打開文件
- 描述符:內核打開文件時返回的一個小的非負整數
- 每個進程開始均有三個打開的文件
- 標準輸入(描述符為0)
- 標準輸出(描述符為1)
- 標準錯誤(描述符為2)
- 改變當前的文件位置
- 讀寫文件
- 關閉文件
- 打開文件
- 文件
- 類型:普通文件、目錄、套接字
- 目錄層次:
- 打開和關閉文件
- 調用
open
int open(char *filename,int flags,mode_t mode);
flags
參數指明打開文件方式:- O_RDONLY:只讀
- O_WRONLY:只寫
- O_RDWR:可讀可寫
flags
參數提供額外提示:- O_CREAT:文件不存在,創建一個截斷(空)文件
- O_TRUNC:文件已存在就截斷它
- O_APPEND:在每次寫操作前,設置文件位置到文件的結尾處
- 關閉文件:
int close(fd);
- 調用
- 讀和寫文件
- 調用
read
和write
函數執行輸入輸出
size_t read(int fd,void *buf,size_t n); ssize_t write(int fd,void *buf,size_t n);
- 調用
- 類型:普通文件、目錄、套接字
RIO包
無緩沖的輸入輸出函數
#include "csapp.h" ssize_t rio_readn(int fd,void *usrbuf,size_t n); ssize_t rio_writen(int fd,void *usrbuf,size_t n);
帶緩沖的輸入函數
#include "csapp.h" void rio_readinitb(rio_t *rp,int fd); ssize_t rio_readlineb(rio_t *rp,void *usrbuf,size_t maxlen); ssize_t rio_readnb(rio_t *rp,void *usrbuf,size_t n);
- 讀取文件元數據
- 調用
stat
和fstat
函數檢索文件的信息(元數據)
#include <unistd.h> #include <sys/stat.h> int stat(const char *filename,struct stat *buf); int fstat(int fd,struct stat *buf);
- 讀取目錄內容
- 返回目錄流的指針
#include <dirent.h> #include <sys/stat.h> DIR *opendir(const char *name);
- 返回流dirp中下一目錄項的指針
#include <dirent.h> struct dirent *readdir(DIR *dirp);
- 關閉流並釋放所有資源
#include <dirent.h> int closedir(DIR *dirp);
I/O重定向
- Linux shell提供了I/O重定向操作符,允許用戶將磁盤文件和標準輸入輸出聯系起來
- 重定向到磁盤文件
foo.txt
:linux> ls > foo.txt
I/O重定向使用
dup2
函數工作#include <unistd.h> int dup2(int oldfd,int newfd);
ch06課下測試錯題總結
- 有關磁盤操作,說法正確的是()
A .
對磁盤扇區的訪問時間包括三個部分中,傳送時間最小。
B .
磁盤以字節為單位讀寫數據
C .
磁盤以扇區為單位讀寫數據
D .
讀寫頭總處於同一柱面
正確答案:A C D 書P409
- 有關RAM的說法,正確的是()
A .
SRAM和DRAM掉電後均無法保存裏面的內容。
B .
DRAM將一個bit存在一個雙穩態的存儲單元中
C .
一般來說,SRAM比DRAM快
D .
SRAM常用來作高速緩存
E .
DRAM將每一個bit存儲為對一個電容充電
F .
SRAM需要不斷刷新
G .
DRAM被組織為二維數組而不是線性數組
正確答案: A C D E G 書P400
2018-2019-1 20165330 《信息安全系統設計基礎》第六周學習總結