#022
#023 /* clear the umask */
#024 umask(0);
在上面這段代碼裡,調用函數umask來設定屏蔽位為0值。這樣的意思是什麼呢?是告訴系統做了那些工作呢?要瞭解這個,就得深入查看一下linux函數大全了,因為它的作用就一目瞭然了,它的解釋如下:
linux中的 umask 函數主要用於:在建立新檔案或目錄時 屏蔽掉新檔案或目錄不應有的訪問允許許可權。檔案的訪問允許許可權共有9種,分別是:r w x r w x r w x(它們分別代表:使用者讀 使用者寫 使用者執行 組讀 組寫 組執行 其它讀 其它寫 其它執行)。
其實這個函數的作用,就是設定允許當前進程建立檔案或者目錄最大可操作的許可權,比如這裡設定為0,它的意思就是0取反再建立檔案時許可權相與,也就是:(~0) & mode 等於八進位的值0777 & mode了,這樣就是給後面的代碼調用函數mkdir給出最大的許可權,避免了建立目錄或檔案的許可權不確定性,指定明確的標誌,可謂是開發人員對代碼健壯性深刻的反映,高度明確性。
#025
#026 /* Get the basic filesystem setup we need put
#027 * together in the initramdisk on / and then well
#028 * let the rc file figure out the rest.
#029 */
#030 mkdir("/dev", 0755);
#031 mkdir("/proc", 0755);
#032 mkdir("/sys", 0755);
在上面這段代碼裡,主要就是在當前記憶體類比磁碟裡建立一個基本的檔案系統,以便後面載入rc檔案來做其它事情。其中就是建立裝置目錄dev,進程檔案系統目錄proc,系統目錄sys。
/dev是devfs(裝置檔案系統)或者udev的掛在點所在。在使用devfs的核心裡如果沒有/dev,根本見不到Shell啟動的資訊,因為核心找不到/dev/console;在使用udev的系統裡,也事先需要在/dev下建立console和null這兩個節點。關於devfs和udev的區別,網上很多文章說。當然如果你的核心已經不支援devfs了(2.6.12以後),可以使用純純的靜態節點。也就是用mknod人工產生。
/proc是用來掛載存放系統資訊虛擬檔案系統——“proc檔案系統”,“proc檔案系統”在核心裡面可以選。如果沒有“proc檔案系統”,很多Shell自己的命令就沒有辦法運行,比如ifconfig。“proc檔案系統”不像devfs可以自動掛載,它需要使用初始化指令碼掛載。另外,udev也需要“proc檔案系統”的支援。
/sys用於掛載“sysfs檔案系統”,“sysfs檔案系統”在核心裡面可以選