通过编写C语言程序,我需要列出当前目录中拥有644权限的所有文件。我不能使用system(),必须使用execl()才能使用系统调用。
这是我在代码中使用的一行:
execl("/usr/bin/find", "find . -maxdepth 1 -perm 644", (char *)NULL);问题是代码正在搜索整个磁盘,而不是当前目录。请帮我修一下好吗?
...
case 4:
int status;
switch (fork()){
case -1: quit ("fork",1);
case 0:
execl("/usr/bin/find","find","." ,"-maxdepth" ,"1","-perm", "644",(char *)NULL) ;
exit (200);
default:
wait(&status);
exit(0);
}
}发布于 2012-11-22 05:44:22
将论点分开:
execl("/usr/bin/find", "find", ".", "-maxdepth", "1", "-perm", "644", (char *)NULL);您的调用相当于调用没有参数的find程序(以及非常有趣的argv[0])。
发布于 2012-11-22 05:48:40
execl("/usr/bin/find","/usr/bin/find", ".", "-maxdepth", "1", "-perm", "0644",(char *)NULL);发布于 2012-11-22 06:53:29
对于您的特定任务,使用文件树遍历 (ftw)更合适。
ftw只是一个库,所以您不需要生成外部进程来完成工作。而且,解析结果要容易得多。
https://stackoverflow.com/questions/13506267
复制相似问题