gpt4 book ai didi

c++ - 一个 exec 函数中的多个终端命令

转载 作者:行者123 更新时间:2023-11-28 00:46:51 26 4
gpt4 key购买 nike

出于好奇,我想知道执行两个或多个 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);
}

我想你明白了。不用说它没有用,它只是执行了第一个命令然后就死了。无论如何,切入正题。

真的有必要在 fork 进程中创建单独的 execlp 行,然后在循环中“刷新”子进程吗?或者我们是否有其他方法可以在单个 execlp 行中执行相同的操作?

如果可能,请举例说明我们如何实现相同的结果。

谢谢。

最佳答案

您混淆了“执行程序”和“在系统的命令解释器中输入文本”。您的解释器知道如何处理 ">""&&",但它们不是可以执行的程序。

尝试使用 system()

system("free > tmp1 && uptime > tmp2 && cat tmp1 tmp2 > result && rm tmp1 tmp2");

关于c++ - 一个 exec 函数中的多个终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933011/

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