从C程序发送Linux命令

时间:2013-08-04 20:11:20

标签: c linux shell

我正在编写一个在Linux shell中运行的C程序。 现在我遇到了这样的命令问题。

#include <stdio.h>
void main()
{
char* command="history>>history";
system(command);
}

我希望它将命令“history”的结果写入文档,但是它失败并且空白。

如果我将其更改为“date&gt;&gt; history”,则会将当前系统时间写入文档。

“历史&gt;&gt;历史”有问题吗? 如果我想做那项工作怎么办? 谢谢!

1 个答案:

答案 0 :(得分:5)

问题是history不是真正的命令,而是内置的shell。因此,你不能从C程序[1]中调用它。

根据用户使用的shell,您可以从~/.bash_history~/.zsh_history等获取历史记录。但请注意,zsh仅在会话结束时写入此文件。

[1]好吧,你可以理论上尝试system("bash -c history"),但你不会得到实际的历史记录,因为内置函数不会在当前会话的上下文中运行。