我需要一点帮助来模拟C程序中的终端命令。更具体地说,"帮助"命令。
只是为了澄清这里发生了什么。我正在进行一项在Linux环境下构建C程序的任务,该程序将提示用户输入命令(用户将在C程序中键入实际的Linux命令),程序将读取用户输入,并且输出命令的结果,就像在终端中键入命令一样。
我刚接触Linux和C,但我认为我可以构建主程序。我只是想学习如何在C程序中运行Linux命令。我研究并成功完成了一些命令,例如" clear"和" ls",但我无法得到"帮助"甚至"退出"上班。
这是我如何得到的" ls"工作:
np.array(splitted)
我遵守并运行了该程序,它完全符合预期,运行命令就好像我在终端输入一样。现在我为" help"做了同样的事情,但它并没有说这个命令是"没找到。"所以我搜索了一下,发现shell在特定的目录中查找执行某些东西。 " LS"特别是在/ usr / bin中。问题是,我似乎无法找到" help"被储存了。我是在寻找特定目录的正确方向,还是无法运行" help"在C程序中?
非常感谢任何帮助!
答案 0 :(得分:4)
#include <iostream>
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
#include "include/rapi/RApi.h"
#pragma GCC diagnostic pop
int main() {
std::cout << "Test\n";
return 0;
}
是一个内置的bash,而不是一个可以运行的真实程序。
help
使用系统的shell解释器(system(3)
)来运行命令,而系统上没有内置/bin/sh
。
答案 1 :(得分:0)
使用
system("bash -c help");
而不只是&#34; help&#34;。看来你的默认shell不是bash而是其他东西。 &#34; bash -c&#34;只需指定一个专门用于bash的命令(-c选项意味着&#34;命令&#34;)。您可以通过查看/ bin / sh指向的位置来通过命令行进行检查。
ls -l /bin/sh
应该提供一些符合
的内容lrwxrwxrwx 1 root root 4 Sep 9 19:30 /bin/sh -> bash*
或其他
答案 2 :(得分:0)
正如system(3)
doc所说,它使用/bin/sh
来执行命令行。 /bin/sh
无论如何都与/bin/bash
不同。即使您的系统中只有bash(1)
,当您将其作为sh
运行时,它的行为就像使用普通sh
(在兼容模式下运行)一样,所以没有{{1命令可用。