首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用execl运行Linux命令

使用execl运行Linux命令
EN

Stack Overflow用户
提问于 2012-11-22 05:13:26
回答 3查看 25.7K关注 0票数 3

通过编写C语言程序,我需要列出当前目录中拥有644权限的所有文件。我不能使用system(),必须使用execl()才能使用系统调用。

这是我在代码中使用的一行:

代码语言:javascript
复制
execl("/usr/bin/find", "find . -maxdepth 1 -perm 644", (char *)NULL);

问题是代码正在搜索整个磁盘,而不是当前目录。请帮我修一下好吗?

代码语言:javascript
复制
        ...

        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);
            }
        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-22 05:44:22

将论点分开:

代码语言:javascript
复制
execl("/usr/bin/find", "find", ".", "-maxdepth", "1", "-perm", "644", (char *)NULL);

您的调用相当于调用没有参数的find程序(以及非常有趣的argv[0])。

票数 3
EN

Stack Overflow用户

发布于 2012-11-22 05:48:40

代码语言:javascript
复制
execl("/usr/bin/find","/usr/bin/find",  ".", "-maxdepth", "1", "-perm", "0644",(char *)NULL);
票数 2
EN

Stack Overflow用户

发布于 2012-11-22 06:53:29

对于您的特定任务,使用文件树遍历 (ftw)更合适。

ftw只是一个库,所以您不需要生成外部进程来完成工作。而且,解析结果要容易得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13506267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档