關於path_alloc()函式
在《UNIX環境高階程式設計》學習中,在第四章的程式清單4-7中,發現了一個“錯誤”。發現即使apue.h中宣告瞭path_alloc()這個函式,但是在編譯程式清單時還是會提示path_alloc()未定義。這其實並不是錯誤,因為我本來就沒有這個函式的實現。
如果我在第二章看得仔細的話,就能發現原來path_alloc()的實現在程式清單2-3中。
現在自己把函式實現貼出來,以示警告:
#include "apue.h"
#include
#include
#ifdef PATH_MAX
static int
pathmax = PATH_MAX;
#else
static int
pathmax = 0;
#endif
#define SUSV3
200112L
static long
posix_version = 0;
#define PATH_MAX_GUESS1024
char *path_alloc(int *sizep)
{
char *ptr;
int size;
if(posix_version == 0)
posix_version = sysconf(_SC_VERSION);
if(pathmax == 0){
errno = 0;
if((pathmax = pathconf("/", _PC_PATH_MAX)) < 0){
if(errno == 0)
pathmax = PATH_MAX_GUESS;
else err_sys("pathconf error for _PC_PATH_MAX");
} else {
pathmax++;
}
}
if(posix_version < SUSV3)
size = pathmax + 1;
else size = pathmax;
if((ptr = malloc(size)) == NULL)
err_sys("malloc error for pathname");
if(sizep != NULL)
*sizep = size;
return(ptr);
}
相關文章
- 關於函式指標函式指標
- 關於count函式的理解函式
- 關於inline函式inline函式
- 關於lag函式的用法函式
- 關於建構函式與解構函式的分享函式
- python關於函式形參Python函式
- 關於scanf函式的問題函式
- 關於close函式和cp命令函式
- 關於函式索引的問題?函式索引
- Oracle中關於函式的使用Oracle函式
- 關於qt中的tr()函式QT函式
- 關於Oracle取整的函式Oracle函式
- 關於cuda中的函式問題函式
- 關於oracle內建函式的使用Oracle函式
- 關於Oracle自定義分組函式Oracle函式
- 關於函式索引(function-based index)函式索引FunctionIndex
- 關於字串的功能函式小結字串函式
- python 關於 函式物件與閉包Python函式物件
- 關於 js 中的回撥函式 callbackJS函式
- 關於執行緒的幾個函式執行緒函式
- 關於緩動動畫函式的封裝動畫函式封裝
- 關於scala中的主建構函式函式
- C語言中關於時間的函式函式
- 關於建構函式的一點理解函式
- 關於字串的幾個有用函式 (轉)字串函式
- 關於C++當中的“模板函式”C++函式
- 關於變數的宣告和定義、內部函式和外部函式變數函式
- 關於apue第二章獲取絕對路徑長度程式path_alloc()分析
- 關於javascript中變數及函式的提升JavaScript變數函式
- 關於python建構函式的過載Python函式
- ES6深入學習(二)關於函式函式
- 關於 Math.random 的一些函式random函式
- 關於linux下system()函式的總結Linux函式
- javascript中關於匿名函式高階介紹JavaScript函式
- 關於Vue中常用的工具函式封裝Vue函式封裝
- 關於function建構函式特別注意的Function函式
- 關於QList與QStringList的append函式APP函式
- 關於虛擬函式的一些理解函式