1. 程式人生 > >2018-2019-1 20165320 《信息安全系統設計基礎》第六周學習總結

2018-2019-1 20165320 《信息安全系統設計基礎》第六周學習總結

知識點總結 查找 size 轉換成 信息安全 二進制 存在 顯示 當前

教材知識點總結

Unix I/O

  • 介紹:所有I/O設備都被模型化為文件,這種將設備映射為文件的方式,允許Linux內核引出一個簡單、低級的應用接口,稱為Unix I/O。

    • 打開文件:一個應用程序通過要求內核打開相應的文件,宣告它想要訪問一個I/O設備。

    • 每個進程開始時有3個打開的文件:標準輸入、標準輸出、標準錯誤。

    • 改變當前文件位置:每個打開的文件,有一個文件位置k,文件位置是文件開頭起始的字節偏移量。seek可以顯式設置文件的當前位置。

    • 讀寫文件:

      讀:從文件復制n個字節到內存中

      寫:從內存復制n個字節到文件中

    • 關閉文件:內核釋放文件打開時創建的數據結構,關閉打開的文件並釋放內存。

文件

  • 文件類型

    • 普通文件:

      • 文本文件:只含有ASCII或Unicode字符的普通文件。

      • 二進制文件:所有不是文本文件的文件。

    • 目錄:包含一組鏈接的文件,每個鏈接都將一個文件名映射到一個文件。

    • 套接字:用來與另一個進程進行跨網絡通信的文件。

    • 可以用cd命令修改shell中的當前工作目錄。

    • 路徑名的兩種形式:

      • 絕對路徑:以一個斜杠開始,表示從根節點開始的路徑。

      • 相對路徑:以文件名開始,表示從當前工作目錄開始的路徑。

    • 打開與關閉文件:

      • 進程通過Open函數打開一個已存在的文件或者創建新文件。

          int open(char *filename,int flags,mode_t mode);
      • 原理:open函數將文件名轉換成一個文件描述符,並且返回該描述符數字。

      • flag參數:

        O_RDONLY:只讀

        O_WRONLY:只寫

        O_RDWR:可讀可寫

        O_CREAT:如果文件不存在,創建一個新文件。

        O_TRUNC:如果文件已存在,截斷。

        O_APPEND:在每次寫操作前,設置文件位置到文件的結尾處。

        例子:fd = Open("foo.txt",O_RDONLY,0)

        以讀的方式打開一個已存在的文件。

      • mode參數:指定了新文件的訪問權限位。

        S_IRXX:XX能夠讀這個文件

        S_IWXX:XX能夠寫這個文件

        S_IXXX:XX能夠執行這個文件

      • 進程通過調用close函數關閉一個打開的文件,傳入的參數為文件描述符。

          int close(int fd);
      • 如果關閉一個已關閉的描述符會出錯

    • 讀和寫文件

      • 應用程序通過read與write函數來執行輸入和輸出。

        • read介紹:read函數從描述符為fd的當前文件位置復制最多n個字節到內存位置buf,返回值為-1表示一個錯誤,返回值為0表示EOF。

            ssize_t read(int fd, void *buf , size_t n);
        • write介紹:從內存位置buf復制至多n個字節到描述符fd的當前文件位置。

            ssize_t write(int fd, const void *buf , size_t n);
    • RIO包的兩種不同函數

      • 無緩沖的輸入輸出函數:直接在內存與文件之間傳送數據

      • 帶緩沖的輸入函數:允許高效地從文件中讀取文本行與二進制數據。

    • 應用可以通過stat函數檢索相關文件信息。

      • stat函數以一個文件名為輸入,並填寫一個stat數據結構中的各個成員。

        int stat(const char filename,struct stat buf);

標準I/O

  • 相關函數

    • 打開與關閉文件:fopen(),fclose()

    • 讀和寫:fread(),fwrite()

    • 讀、寫字符串:fgets(),fputs()

課上相關命令總結

  • od :讀取文件內容,以二進制顯示。

  • man -k k1| grep k2 | grep k3:過濾關鍵字k查找

  • grep -nr XXX /usr/include:尋找XXX在哪一個文件中

2018-2019-1 20165320 《信息安全系統設計基礎》第六周學習總結