hpunix下标准c取得指定目录下所有文件和路径的名称

在unix或linux中,标准c访问目录的函数主要有opendir, readdir, closedir。

  • 下面就是利用这几个函数, 对指定进行遍历,取得所有名称的处理,类似于ls命令。
#include  < dirent.h >

        
int  lsDir( char *  pathname)
        
{
            DIR         
*pdir;
            
struct dirent   *pstDirent;

            
/* call opendir function    */
            pdir 
= opendir(pathname);
            
if (NULL == pdir)
            
{
                
/* error */
                
return (-1);
            }

            
/* clear errno */
            errno 
= 0;
            
/* call readdir in loop  */
            pstDirent 
= readdir(pdir);
            
while (pstDirent != NULL)
            
{
               
/* 目录中的[.] 和 [..]以外 */ 
                
if (0 != memcmp(pstDirent->d_name, "."1/* . */
                    
&& 0 != memcmp(pstDirent->d_name, ".."2))/* .. */
                
{
                    
/* print the file name */
                    printf(
"%s ", pstDirent->d_name);
                }

                
/* call readdir() function */
                
/* get the filename in the current directory */
                pstDirent 
= readdir(pdir);
            }

            
/**********************************************
             * close directory
             *********************************************
*/

            
/* call closedir() */
            iRet 
= closedir(pdir);
            
if (0 != errno)
            
{
                
return (-1);
            }
    
            
return 0;       
       }
  • 不过这里也存在一些问题未解决,比如列出的名称是文件名还是目录名, 甚至还可能是link文件,而且文件的大小,属性等。实际使用时往往还需要加 stat() 函数来进行具体处理。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值