PHP是一個廣泛應用于互聯(lián)網(wǎng)開發(fā)的腳本語言。它融合了C語言、Perl語言以及其他特性,支持面向?qū)ο蟮木幊谭绞健T谠撜Z言中,有一種函數(shù)叫做getcwd()。那么,這個函數(shù)源碼具體是什么樣子呢?我們將在本文中來探究一下。
getcwd()定義為獲取當前工作目錄,其原型如下:
string getcwd(void)
上面的代碼片段說明了該函數(shù)無需傳遞任何參數(shù),它會自動幫助我們獲取當前的工作目錄并返回。
下面來看一段示例代碼:
$dir = getcwd(); echo "當前工作目錄為:{$dir}\n";
這段代碼可以自動獲取當然的工作目錄并輸出在終端中。可能大家會有疑問,工作目錄是什么鬼?簡單來說,工作目錄就是當前腳本所執(zhí)行命令時的目錄。通俗點就是,在你終端里打開了一個文件所屬的目錄即是當前腳本所執(zhí)行命令的目錄。比如,我們在桌面上執(zhí)行一個php文件,則當前腳本所執(zhí)行命令時的目錄就是桌面。
getcwd()函數(shù)在系統(tǒng)調(diào)用中用到了getcwd函數(shù),在Linux下它所代表的是一個系統(tǒng)調(diào)用,會返回當前的工作目錄字符串,存放在指定的緩沖區(qū)中。
PHP_FUNCTION(getcwd) { char *buf; size_t size = 1024; char *ret_buf; if (zend_parse_parameters_none() == FAILURE) { return; } buf = emalloc(size); ret_buf = getcwd(buf, size); if (ret_buf) { RETVAL_STRING(ret_buf); } else { php_error_docref(NULL, E_WARNING, "%s", strerror(errno)); } efree(buf); }
上面是getcwd()函數(shù)的源碼,可以看到主要分為以下幾個步驟:
- 定義參數(shù)和返回值
- 分配內(nèi)存空間
- 調(diào)用系統(tǒng)函數(shù),獲取當前的工作目錄串
- 處理返回值
- 釋放內(nèi)存空間
最后,需要注意的是,getcwd()函數(shù)只會獲取當前腳本所執(zhí)行命令的目錄,如果切換到了其他目錄,它不會隨之改變,需要重新調(diào)用才能獲取到。