【问题标题】:Program linux command with pipe in C在 C 中使用管道编程 linux 命令
【发布时间】:2017-05-08 01:50:28
【问题描述】:

我正在尝试执行下一个 linux 命令

 cat file_a file_b file_c | wc –l > result.txt

在 C 程序中,但我无法正确执行。我的 C 编程水平很低,我想看看如何使该命令在 C 程序中工作。

这是我开发失败的代码:

void main() {

execlp("/bin/sh", "/bin/sh", "-c", "cat file1 file2 fileN | wc –l > lines.txt", 0);

}

【问题讨论】:

  • 您面临的问题是什么?
  • 您可能会得到:wc: –l: No such file or directory,那是因为您可能已经复制粘贴了 shell 命令,而您的 -l 实际上并没有破折号,而是有一些其他字符可以重新组合它。 C 代码本身是正确的。
  • @Alpar:很明显——这是一个 U+2013 EN DASH 而不是 U+002D HYPHEN-MINUS。

标签: c linux shell command pipe


【解决方案1】:

我以你为榜样。 结果:

函数 'execlp' 的隐式声明在 C99 中无效

还有其他一些警告错误。

但我认为如果你使用system() C 函数会更好,这是我所做的:

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

int main(void)
{
   system("cat filea fileb filec | wc -l > result.txt");

   return EXIT_SUCCESS;
}

编译成功后!

如果你只想运行一个命令而不需要读取结果输出,你可以使用 C 函数 system(),但如果你想运行它来获取结果,你应该使用 popen()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-18
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多