加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux的path_alloc函数

发布时间:2016-11-18 08:35:29 所属栏目:Linux 来源:网络整理
导读:#include apue.h #include errno.h> #include limits.h> #ifdef PATH_MAX static int pathmax = PATH_MAX; #else static int pathmax = 0; #endif #define SUSV3 200112L static long posix_version = 0; /* If PATH_MAX is indeterminate, no guarantee t
#include "apue.h" 
#include <errno.h> 
#include <limits.h> 
#ifdef   PATH_MAX 
static int   pathmax = PATH_MAX; 
#else 
static int   pathmax = 0; 
#endif 
#define SUSV3 200112L 
static long posix_version = 0; 
/* If PATH_MAX is indeterminate, no guarantee this is adequate */
#define PATH_MAX_GUESS   1024 
char * 
path_alloc(int *sizep) /* also return allocated size, if nonnull */
{ 
char *ptr; 
int size; 
if (posix_version == 0) 
       posix_version = sysconf(_SC_VERSION); 
if (pathmax == 0) {     /* first time through */
       errno = 0;       /* From: http://www.bianceng.cn */
       if ((pathmax = pathconf("/", _PC_PATH_MAX)) < 0) { 
         if (errno == 0) 
            pathmax = PATH_MAX_GUESS; /* it's indeterminate */
         else
            err_sys("pathconf error for _PC_PATH_MAX"); 
       } else { 
         pathmax++;    /* add one since it's relative to root */
       } 
} 
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); 
} 
    
或
char*path_alloc(int* size)
{
char *p = NULL;
if(!size) return NULL;
p = malloc(256);
if(p)
*size = 256;
else
*size = 0;
return p;
}

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读