pathconf函数

 

说明:版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址

 

 

使用pathconf函数可以动态获得当前系统的目录的最大长度。具体定义形式如表所示:

pathconf函数

 

头文件

<unistd.h>

 

 

函数形式

long pathconf(char *path, int name);

返回值

成功

失败

是否设置errno

返回目录长度的极限值

-1

 

说明:

pathconf()用于获得给定目录或文件的极限(path可以是包含文件名称的具体文件位置)。极限的名称由name参数给定,name可以取下面的值:

1):_PC_LINK_MAX:如果path是文件的具体路径,返回文件最大的链接数;如果path是指目录,则极限反映这个目录的连接数。

2):_PC_MAX_CANON:如果path指向的是终端,返回格式化输出的最大长度。

3):_PC_MAX_INPUT:如果path指向的是终端,返回格式化输入的最大长度。

4):_PC_NAME_MAX:返回创建进程时充许的最大文件名长度

5):_PC_PATH_MAX:返回当前工作目录最大的目录长度。

6):_PC_CHOWN_RESTRICTED:chown函数调用不能应用于该文件,返回非零值。如果path指向的是目录,则目录下的所有文件都应用该规则。

7):_PC_NO_TRUNC:如果文件名超过_POSIX_NAME_MAX,返回非零值。

8):_PC_VDISABLE:path指向的是终端,如果禁止了特殊字符的处理,返回非零值。

 

错误信息:

(1): EINVAL: name参数无效。

(2): ELOOP:解析path时存在循环。

 

实例:

#include <unistd.h>

#include <iostream>

 

int main(void)

{

   long cur_path_len = 0;

   char *cur_work_dir = '\0';

   

   //获得目录的长度

   if ((cur_path_len=pathconf(".", _PC_PATH_MAX))==-1)

    {

       perror("Couldn't get current working path length");

       return (1);

   }    

    

   std:: cout << "Current Path Length is " <<

       cur_path_len << std:: endl;

       

   //根据获得的目录最大长度,分配内存

   if ((cur_work_dir=(char *)malloc(cur_path_len))==NULL)

    {

       perror("Couldn't allocate memory for the pathname");

       return (1);

   }    

   

   //得到当前工作目录

   if (getcwd(cur_work_dir, cur_path_len)==NULL)

    {

       perror("Couldn't get current working directory");

       return (1);

   }    

   

   std:: cout << "Current Working Directory Is " <<cur_work_dir << std::endl;

   

      free(cur_work_dir);

 cur_work_dir = NULL;

   return (0);

}   

 

运行的结果:

Current Path Length is 4096

Current Working Directory Is /c/test

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值