一个linux下目录遍历函数,有个问题,chdir(dir);chdir("..")这两句为 ...

发布网友 发布时间:2024-10-24 00:19

我来回答

3个回答

热心网友 时间:2024-11-09 22:01

因为为了让程序变得准确可行。
  1、chdir("..");是为了在递归完某一子目录后,退回到其父目录继续遍历后续的普通文件或其他子目录;如果缺少这一语句,那么while循环中的递归printdir将会把父目录中后续的普通文件当作目录来操作,从而造成“无法打开目录”这种错误。
  2、chdir(dir);是为了在程序刚运行时进入指定的目录,以及接下来递归时进入相应子目录;

用`pwd`提取的绝对路径。
  [gag@genomic-server tmp]$ more test1
  #!/usr/bin/perl -w
  # script name is test
  use strict;
  my $d="/home/gag";
  my $now=`pwd`;
  print $now,"\n";
  chdir $d;
  print `pwd`;print `ls`;
  `touch iamhere`;
  print "#######################\n";
  chdir $now;print `pwd`;
  `touch iamherethen`;
  [gag@genomic-server tmp]$ perl test1
  /home/gag/perl/tmp
  /home/gag
  c
  cpp1
  cpp2
  java
  perl
  shell
  tools
  #######################
  /home/gag
  [gag@genomic-server tmp]$ ls
  test1
  [gag@genomic-server tmp]$ ls ../../
  c cpp1 cpp2 iamhere iamherethen java perl shell tools

热心网友 时间:2024-11-09 21:54

chdir(dir);是为了在程序刚运行时进入指定的目录,以及接下来递归时进入相应子目录;

chdir("..");是为了在递归完某一子目录后,退回到其父目录继续遍历后续的普通文件或其他子目录;如果缺少这一语句,那么while循环中的递归printdir将会把父目录中后续的普通文件当作目录来操作,从而造成“无法打开目录”这种错误。

【以上只是个人观点,但愿能帮到你^_^】

热心网友 时间:2024-11-09 21:53

最近也遇到了这个问题,但是有些想不通,chdir(dir)后续的程序,并没有更改某个量,readdir还是获取的dir的目录流,和进入该目录有什么关联吗
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com