path_alloc()

来源:互联网 发布:网络大电影怎样审批 编辑:程序博客网 时间:2024/06/06 01:22

在《UNIX环境高级编程》学习中,在第四章的程序清单4-7中,发现了一个“错误”。发现即使apue.h中声明了path_alloc()这个函数,但是在编译程序清单时还是会提示path_alloc()未定义。这其实并不是错误,因为我本来就没有这个函数的实现。

如果我在第二章看得仔细的话,就能发现原来path_alloc()的实现在程序清单2-3中。

现在自己把函数实现贴出来,以示警告:

#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;
#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);
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 支付宝绑定的手机号是空号了怎么办 微信聊天后电话号码重复是怎么办 老婆在外省工作不回到我身边怎么办 知道扣扣号怎样盗取他的密码怎么办 喜欢养猫又怕猫破坏家里怎么办 约她她每次都找借口怎么办? 遇到总是找借口不还钱的人怎么办 装修好了业主找借口不给钱怎么办 荒野行动手机换了帐号登不上怎么办 换新手机后微信头像都没有了怎么办 苹果系统维护换不了微信头像怎么办 系统通知栏不显示qq图标怎么办 快递号码写错了而且发货了怎么办 包裹遗忘在郑州东站安检口了怎么办 锁书包的锁头钥匙全掉了怎么办 平板电脑恢复出厂设置变英语怎么办 给国外银行汇款账号写错账号怎么办 顺丰快递暴力运输产品坏了怎么办 亚航订机票名字少写一个字母怎么办 如果淘宝付款七天内不发货怎么办 浪琴手表调了一下日期不走了怎么办 收件人号码写错快递柜已签收怎么办 医院名字写错了怎么办保险报销 电脑在使用中出现了英文字慕怎么办 下雨天了怎么办我好想你是什么歌 安卓手机不支持微信运动怎么办 装系统时无法跳过密匙怎么办 在msdn里下的系统没有网怎么办 w7电脑更新后系统没法激活怎么办 手机使用加速器后网速变卡怎么办 奥特曼ol分解了迪迦石像怎么办 左右棋牌游戏兑换总说系统护怎么办 四季海棠扦插以后黄叶卷叶怎么办 竹节海棠浇水多了叶子蔫了怎么办 社保停缴了里面的钱怎么办 王者荣耀英雄释放技能有延迟怎么办 买的桑拿木板颜色太深了怎么办 万一填写了奔跑吧诈骗信息该怎么办 深圳限行时段堵在路上怎么办 开车堵在路上到了限行时间怎么办 兄妹之间都不想照顾母亲我该怎么办