busybox原始碼剖析 3 cat c

2021-09-26 02:06:42 字數 1207 閱讀 6228

cat顯示乙個檔案的內容。需要注意的是,cat並不能處理目錄。

1

extern

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函式。

1

extern

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(不考慮符號鏈結)。

1

int 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的完全可定製性,提供了非常靈活,宜於擴充套...