我需要通过编写一个C语言程序来列出当前目录中具有644权限的所有文件。 我不能使用system()并且必须使用execl()才能使用系统调用。
这是我在我的代码中使用的一行:
execl("/usr/bin/find","find . -maxdepth 1 -perm 644",(char *)NulL);
问题是代码search整个磁盘而不是当前目录。 你能帮我解决吗?
... 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); } }
获取C程序的输出而不编译它
非DLL中的阻塞套接字(无窗口)
SetwindowsHook支持32位和64位应用程序
如何使用C#从windows服务运行EXE程序?
Poppler编译在Visual Studio 2008下使用QT4
GDI +初始化崩溃的应用程序,为什么?
无框Qt窗口(win32)中错误的窗口绘画行为
编译linux中的windows Qt代码和库中的变化
直接高效地读写硬盘扇区
使用logoN32_logoN_NEW_CREDENTIALS对windows进行冒充有什么魔力?
分开的论点:
execl("/usr/bin/find",(char *)NulL);
你的调用相当于调用没有参数的find程序(和一个非常有趣的argv[0] )。
execl("/usr/bin/find","/usr/bin/find","0644",(char *)NulL);
对于你的特定任务,使用文件树行走 ( ftw )更合适。
ftw只是一个库,所以你不需要产生外部过程来完成工作。 此外,解析结果也更容易。
总结以上是内存溢出为你收集整理的使用execl来运行一个Linux命令全部内容,希望文章能够帮你解决使用execl来运行一个Linux命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)