【发布时间】:2012-02-07 19:13:16
【问题描述】:
我想运行类似的东西
cat file.tar | base64 | myprogram -c "| base64 -d | tar -zvt "
我使用execlp 来运行进程。
当我尝试运行cat 之类的东西时,它可以工作,但如果我尝试运行base64 -d | tar -zvt,它就不起作用。
我查看了 bash 命令,发现我可以运行 bash 并告诉他运行其他程序。所以它是这样的:
execlp ("bash", "-c", "base64 -d | tar -zvt", NULL);
如果我在终端上运行它,它运行良好,但使用execlp 它不起作用。
如果我使用execlp("cat", "cat", NULL),它可以工作。
有人知道如何使用 execlp 上的-c 参数来执行多个“程序”吗?
我不能使用系统,因为我使用管道和叉子。
现在我注意到,如果我尝试使用 execlp("bash", "bash", "-c", "base64", NULL)... 没有任何反应。 如果我使用 execlp("cat", NULL) 没关系.. 我正在写信给标准输入......我不知道它是否是 bash -c base64 的问题......因为如果我在终端上运行 echo "asd" | bash -c“猫” 一切顺利
【问题讨论】:
-
我已经向in a previous answer 展示了如何使用管道链接任意数量的进程。希望对您有所帮助。
-
我想过,我正在尝试用 bash 解决它,如果我不能这样做,我会尝试多管道方式:(...谢谢。
标签: c++ bash command pipe os.execl