我想运行类似的东西
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)
它就可以了。
有人知道如何使用-c
execlp 上的参数来执行多个“程序”吗?我不能使用系统,因为我使用管道和叉子。
现在我注意到,如果我尝试使用 execlp("bash", "bash", "-c", "base64", NULL)... 什么也没有发生。如果我使用 execlp("cat", NULL) 没关系..我正在写入标准输入...我不知道 bash -c base64 是否有问题..因为如果我在终端回显上运行“asd” | bash -c "cat" 一切顺利