一个linux下目录遍历函数,有个问题,chdir(dir);chdir("..")这两句为 ...
发布网友
发布时间:2024-10-24 00:22
我来回答
共3个回答
热心网友
时间:2024-11-05 18:12
因为为了让程序变得准确可行。
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-05 18:17
最近也遇到了这个问题,但是有些想不通,chdir(dir)后续的程序,并没有更改某个量,readdir还是获取的dir的目录流,和进入该目录有什么关联吗
热心网友
时间:2024-11-05 18:18
chdir(dir);是为了在程序刚运行时进入指定的目录,以及接下来递归时进入相应子目录;
chdir("..");是为了在递归完某一子目录后,退回到其父目录继续遍历后续的普通文件或其他子目录;如果缺少这一语句,那么while循环中的递归printdir将会把父目录中后续的普通文件当作目录来操作,从而造成“无法打开目录”这种错误。
【以上只是个人观点,但愿能帮到你^_^】