gpt4 book ai didi

c - execl() 查找命令 c

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:26 24 4
gpt4 key购买 nike

我想对 shell 执行 find 命令只打印 *.c 文件然后返回带有文件的字符串并将其打印到标准输出。我正在使用管道来做到这一点。当我尝试运行时,我总是得到 find failed: No such file or directory

我认为问题出在路径上。我应该给它的路径是 home/username/Downloads 以防我想打印我的 Downloads 文件夹中存在的所有 *.c 文件??

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char ** argv){
int fds[2];
char buffer[4096];

if(pipe(fds) == -1){
perror("pipe creation failed");
exit(1);
}

switch (fork()){

case 0://child
close(fds[0]);
execl("usr/bin/find","find","home/username/Downloads", "-name \"*.c\" -print0",NULL);
perror("find failed");
exit(20);
break;

case -1: //fork failure
perror("fork failure");
exit(1);

default: //parent
close(fds[1]); //close stdin so only can do stdout
int size= read(fds[0],buffer, 4096);
printf("%s",buffer);
}

exit(1);
}

最佳答案

usr/bin/find前面少了一个斜杠,所以find只在工作目录为/时执行

关于c - execl() 查找命令 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com