Android培訓班(15) – Android移動開發技術文章_手機開發 Android移動開發教學課程

在主函數main裡調用這個函數來做什麼呢?而這個函數是怎麼樣實現的呢?下面就來瞭解這個函數的功能與產現,具代碼如下:


#001  void open_devnull_stdio(void)


#002  {


#003      int fd;


#004      static const char *name = “/dev/__null__”;


這段代碼是指明創建設備節點的名稱,這是空設備。


 


#005      if (mknod(name, S_IFCHR | 0600, (1 << 8) | 3) == 0) {


這行是調用函數mknod來創建設備節點/dev/__null__。空節點當作輸出的黑洞,隻進不出,寫入它的字符永遠不會滿。


 


#006          fd = open(name, O_RDWR);


這行代碼是打開空設備,進行讀寫。


 


#007          unlink(name);


這行代碼是從文件系統中刪除一個名稱。如果名稱是文件的最後一個連接,並且沒有其它進程將文件打開,名稱對應的文件會實際被刪除。


 


#008          if (fd >= 0) {


#009              dup2(fd, 0);


#010              dup2(fd, 1);


#011              dup2(fd, 2);


#012              if (fd > 2) {


#013                  close(fd);


#014              }


#015              return;


#016          }


這段代碼是用來檢查是否打開空設備成功,是否重定向設備成功,如果成功就返回。


 


 


#017      }


#018 


#019      exit(1);


這行代碼是當創建空設備節點出錯時退出。


 


#020  }


#021 


 


通過上面的代碼,就可以創建/dev/__null__空設備,並測試是否創建成功

發佈留言