gpt4 book ai didi

C 如何将 exec 与 linux 命令和管道一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:45 25 4
gpt4 key购买 nike

我需要执行以下 Linux 命令:ls -la |排序 | wc -l 并且我必须使用 exec 函数...这是我的代码:

x = fork();

char * args[] = { "ls", "-la" , "|", "sort" , "|" , "wc", "-l" };

if(x == 0){ //Father
//Dad validations


}else{

execlp(args[0],args[0], args[1],args[2],args[3],args[4],args[5],args[6], NULL);
perror("Exec error\n");

exit(1);
}

这些命令可以正常分开使用,但是当我将它们放在一起时,我收到此错误消息:

  ls: cannot access |: No such file or directory

ls: cannot access sort: No such file or directory

我想错误是在 Linux 管道中

感谢您的宝贵时间!

最佳答案

尝试执行以下参数:

char * args[] = { "bash", "-c" , "ls -la | sort | wc -l" };

这是必要的,因为您要使用的管道语法(以及从一个进程到另一个进程的结果管道输出)实际上是 shell 的一项功能。因此,为了能够 execlp 以这种方式格式化的命令,我们需要执行一个 shell(在本例中为 bash)并将您的命令作为字符串提供给它-c 标志。

关于C 如何将 exec 与 linux 命令和管道一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36270604/

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