系統程式第二個作業 

製作mycp , redirect 功能程式

(1) Hw2_1.c

   此為簡易之mycp (copy)程式


  1. 可以用來複製指定檔案,在第一個參數指定欲複製的檔案,在第二個參數給予複製檔案檔名,
 
      第三個參數可以設定欲複製的百分比。
   
     (例如:第三個參數給40,則表示只複製第一個參數所指
    
     的檔案最後40%的資料,此參數必須介於0~100)

  2. 此一程式必須使用到open、read、write、close以及pread此五個函式。

  3. 參數輸入錯誤必須印出錯誤訊息,如執行範例所示。

  4. 執行格式:mycp source_file target_file percentage

  執行範例畫面:
 

這題目主要是要練習操作在UNIX/Linux環境下對於檔案的操作

以前對檔案的接觸大多是利用檔案指標(FILE * name)來做開關讀寫的動作

但在UNIX環境下則是利用file descriptor(non-negative integer)來表示檔案的所在

並利用它來操控檔案的動作  其中要求要用到的功能 舉open來說

int open(const char *pathname, int flags, mode_t mode); 

    return value: 所開檔案的file descriptor

   *pathname : 所開檔案名稱的指標

   flags:開啟模式(Readonly,Writeonly...)

   mode:附加權限 (APPEND,CREAT...)

與之前利用fopen所開檔案相比  open多了有關權限的管理

建立出來的檔案須有加入特定參數(mode)才能進行讀取或寫入的動作

寫這作業是讓我開始注意這些函式傳回值代表的不同意義

以前對於傳回值所扮演的角色都不太去注意 因這作業所用函式都是經由檔案的fd

而fd又是由open所傳回   (read/write)傳回值代表所(讀到/寫入)的檔案大小

最後便是利用這些數值去完成所需功能

作業的要素應該就是開檔、讀檔、寫檔、關檔 

其他功能也不多說了  try & error 真的是我學習一個程式的唯一途徑...orz
--------------------------------------------------------------------------------------------------

P.S 寫這個作業時讓我想到compiler作業...@@

      當時我也是利用FILE把symbol table建立出來  但助教似乎不太能接受....囧

      我想也是 畢竟file I/O的效率比用link list 或 hash差很多....

      直接硬寫實在不很優雅......
arrow
arrow
    全站熱搜

    molimomo 發表在 痞客邦 留言(0) 人氣()