当前位置:  技术问答>linux和unix

opendir函数后没有closedir(dir),次数多了以后会不会对调用system函数有影响啊

    来源: 互联网  发布时间:2016-10-11

    本文导语:  system()参数是跑脚本的,脚本是通过ssh方式从另外一台机器上取得相应的文件由于不知道取没有取成功,故要对相应 的目录做遍历,程序的伪码为: handle_timeout() {    system()//取得文件    dir=opendir()//开相应的目...

system()参数是跑脚本的,脚本是通过ssh方式从另外一台机器上取得相应的文件由于不知道取没有取成功,故要对相应
的目录做遍历,程序的伪码为:

handle_timeout()
{
   system()//取得文件
   dir=opendir()//开相应的目录
   if(dir== NULL)
        {
           return false;
         }
    while(readdir()!=NULL)
         {
            如果取得文件返回true;
         }
      return false;
}
即opendir()后没有closedir(),这样次数多了以后会不会使system()函数调用失败
会不会使以后的opendir()失败???

linux版本为:
Linux localhost.localdomain 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:32:14 EDT 2005 i686 i686 i386 GNU/Linux

|
opendir会调用malloc,opendir后不closedir, 会耗尽内存,最后opendir会失败的。

DESCRIPTION
     The opendir() function opens the directory named by filename, associates
     a directory stream with it and returns a pointer to be used to identify
     the directory stream in subsequent operations.  The pointer NULL is
     returned if filename cannot be accessed, or if it cannot malloc(3) enough
     memory to hold the whole thing.

|

linux下面就是errno,全局变量
你可以通过perror("opendir"); 直接在屏幕上显示错误信息
也可以用strerrno(errno)返回一个错误信息,记录日志啥的
记得包含头文件

|
opendir会返回一个目录指针,closedir关闭,如果不关闭会造成资源泄露的..
你的程序中,返回之前你完全是可以先closedir的

另外,判断一个文件是否存在也不用这么麻烦
可以直接通过access()来判断
access(yourfile, R_OK);

或者,调用
struct stat st;
stat(yourfile, &st);

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何判断路径是否存在?stat?opendir?
  • 这样用opendir()怎么不行啊?指点捡分
  • 在ARM上用opendir、readdir统计文件总数速度超慢啊
  • opendir,readdir 的问题
  • opendir() chdir() 的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3