close
Hw2_2.c
此為輸出轉換程式(redirect)
1. 可以將標準輸出(standard output)的資料轉換至某個指定檔案內
  
   (意即此程式可以將printf函式所要顯示的資料轉換到指定的檔案裡面)。

2. 必須給予一個參數指定要接收資料的檔案名稱

3. 用while loop 或 for loop 讓等待使用者輸入各種字串,直到輸入 “/q” 才跳出來。

4. 利用dup或是dup2函式複製標準輸出之file descriptor。

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

6. 執行格式:redirect target_file

執行範例畫面


一開始在用什麼方式去存使用者的輸入文字花了蠻久的時間

因為gets(一次抓一行)沒有對boundary做檢查 所以在compiler時會有warning

後來用getchar()一個一個存到buffer

再來就是沒有搞清楚題目所謂"標準輸出"的意思

以為直接用write寫入檔案就ok了

後來經鮑魚提醒跟熱心學弟的說明

才知道是要用dup2函式將目標檔案的fd複製到standard output(1)

再利用printf將buffer內容寫入檔案

其他部份大概就是針對/p這結束字元去做判斷處理

一般來說我們在UNIX環境下一開始所能拿到的最小fd就是3

因為在預設裡:

0: standard input
1: standard output
2: standard error


所以這三個數字是被系統所先佔用
-----------------------------------------------------------------------------------
蔣老大說過 :
    
I/O是最難做的部份

因為你不知道使用者會不會手賤給你亂輸入什麼.....
arrow
arrow
    全站熱搜

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