我需要通过编写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);
}
}
解决方法:
分开论点:
execl("/usr/bin/find", "find", ".", "-maxdepth", "1", "-perm", "644", (char *)NULL);
你的调用等同于调用没有参数的find程序(和一个非常有趣的argv [0]).
标签:c-3,linux,unix,exec
来源: https://codeday.me/bug/20190826/1725365.html