cat顯示乙個檔案的內容。需要注意的是,cat並不能處理目錄。
1extern
int cat_main(int argc, char **ar**)29
10while (--argc > 0
) else
if (print_file_by_name(*ar**) ==false) 16}
17return
status;
18 }
當輸入cat或者是cat -時,都會呼叫print_file函式。
1extern
void print_file(file *file)
2
顯然,print_file(stdin)就是將stdin的內容拷貝到stdout。即輸入什麼,就輸出什麼。
input--stdin
當cat filename時,進入print_file_by_name函式。
1extern
int print_file_by_name(char *filename)
2 else
1617
return
status;
18 }
is_directory判斷是否是目錄。如果不是目錄,就用pring_file函式列印。要注意,這裡的true引數決定了只使用stat(不考慮符號鏈結)。
1int is_directory(const
char *filename, const
int followlinks, struct stat *statbuf)210
11if (followlinks ==true)
12 status =stat(filename, statbuf);
13else
14 status =lstat(filename, statbuf);
1516
if (status < 0 || !(s_isdir(statbuf->st_mode)))
19else status =true;
2021
if(didmalloc)
25return
status;
26 }
整個流程的結構非常清晰。
express原始碼剖析3
看下這個函式的的核心 就是 get file extension,ext為副檔名 var extension ext 0 ext ext store engine this.engines extension fn use的使用 var express require express functio...
原始碼剖析 Hashtable 原始碼剖析
hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...
BusyBox原始碼結構簡介
1 介紹busybox稱作是嵌入式開發的瑞士軍刀,實用,短小,穩定。l busybox利用linux實用工具中 大量重複的事實,將重複的 重新整理,放到乙個檔案中,減少了多次包含。l busybox通過簡化非必要的複雜功能,減少占用的空間。l busybox的完全可定製性,提供了非常靈活,宜於擴充套...