2018-2019-1 20165221 《資訊安全系統設計》第六週學習總結
阿新 • • 發佈:2018-11-04
2018-2019-1 20165221 《資訊安全系統設計》第六週學習總結
知識點總結
理論知識
- 作業系統完成的「硬體相關、應用無關」的工作比喻成兩個角色:
管家婆
服務生
作業系統通過三抽象概念完成了「管家婆」的功能:
header 1 | header 2 ---|--- 抽象一| 通過「檔案」對I/O裝置進行了抽象 抽象二| 通過「虛存」對主存和I/O裝置進行了抽象 抽象三| 通過「程序」對CPU、主存和I/O裝置進行了抽象
who命令如何使用
- 可以檢視當前登入的賬戶,終端和近期的登陸時間
- 鍵入
man 1 who
可以具體檢視該命令的用法
who
命令的其他幾種形式:header 1 | header 2 ---|--- 形式1 | ```whoami``` 形式2| ```who am i``` 形式3| ```who mom likes```
- who的幫助文件提供了重要的資訊:
If FILE is no specified, use /var/run/utmp,/var/log/wtmp as FILE is common.
- 下面進行具體檢視和捕捉
由此證實關於utmp
是一條記錄,一條記錄組成的檔案的猜想。 找到實現
who
命令的程式碼:
如何自己編寫
who
命令- 具體程式碼:
#include <stdio.h> #include <stdlib.h> #include <utmp.h> #include <fcntl.h> #include <unistd.h> int show_info( struct utmp *utbufp ) { printf("%-8.8s", utbufp->ut_name); printf(" "); printf("%-8.8s", utbufp->ut_line); printf(" "); printf("%10ld", utbufp->ut_time); printf("\n"); return 0; } int main() { struct utmp current_record; int utmpfd; int reclen = sizeof(current_record); //開啟utmp 檔案 if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){ perror( UTMP_FILE ); exit(1); } //讀取utmp中的每一條記錄 while ( read(utmpfd, ¤t_record, reclen) == reclen ) //顯示記錄中的相關資訊 show_info(¤t_record); //關閉utmp檔案 close(utmpfd); return 0; }
學習linux系統程式設計的方法
- 仔細研究
manpages
- 問題驅動,使用
man -k key1|grep key2|...
在manpages中搜索你要的內容 - 閱讀.h檔案: 可以通過
grep -nr XXXX /usr/incldue
查詢相關的巨集定義,結構體定義,型別定義等 解決一個問題要多個系統呼叫,可以參考
manpages
的SEE ALSO
部分來得到相關係統呼叫的資訊文字檔案易讀取,佔位置;二進位制檔案靈活易儲存,讀取難
參考資料
- 別出心裁的Linux系統呼叫學習法
- 文字檔案與二進位制檔案區別