【发布时间】:2013-04-10 17:57:01
【问题描述】:
出于好奇,我想知道执行两个或多个 Linux 命令的最简单方法是什么。举个例子:
1) free > tmp1
2) uptime > tmp2
3) cat tmp1 tmp2 > result
4) rm tmp1 tmp2
我们如何在终端中用 1 行实现同样的效果:
free > tmp1 && uptime > tmp2 && cat tmp1 tmp2 > result && rm tmp1 tmp2
现在我尝试在 C++ 中实现相同的目标(目标是在一个 execlp 中完成),例如:
pid_t child;
child = fork();
if ( child > 0 ) {
execlp("free", "free", ">", "tmp1", "&&", "uptime", "uptime", ">", "tmp2", "cat", "cat", "tmp1", "tmp2", ">", "result", "&&", "rm", "rm", "tmp1", "tmp2", NULL);
}
我想你得到了图片。不用说它不起作用,它只是执行第一个命令然后死掉。不管怎样,切入正题。
真的有必要在分叉的进程中创建单独的 execlp 行,然后在循环中“刷新”子进程吗?或者我们是否有替代方法可以在单个 execlp 行中执行相同的操作?
如果可能,请举例说明我们如何实现相同的结果。
谢谢。
【问题讨论】:
-
您不能使用多个
execlp有什么原因吗?另外,您确定>首先在execlp中有效吗? -
真的没有什么特别的原因,我只是想探索一下选项。不,我完全不确定,这就是我问的原因。还在学习中。
-
小优化:"free > result && uptime >> result"