我需要通过编写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);
}
}
答案 0 :(得分:3)
分开论点:
execl("/usr/bin/find", "find", ".", "-maxdepth", "1", "-perm", "644", (char *)NULL);
您的调用等同于调用没有参数的find
程序(并且非常有趣argv[0]
)。
答案 1 :(得分:2)
execl("/usr/bin/find","/usr/bin/find", ".", "-maxdepth", "1", "-perm", "0644",(char *)NULL);
答案 2 :(得分:1)
对于您的特定任务,使用file tree walk(ftw
)更合适。
ftw只是一个库,所以你不需要产生外部进程来完成工作。此外,解析结果要容易得多。