我正在编写一个在Linux shell中运行的C程序。 现在我遇到了这样的命令问题。
#include <stdio.h>
void main()
{
char* command="history>>history";
system(command);
}
我希望它将命令“history”的结果写入文档,但是它失败并且空白。
如果我将其更改为“date&gt;&gt; history”,则会将当前系统时间写入文档。
“历史&gt;&gt;历史”有问题吗? 如果我想做那项工作怎么办? 谢谢!
答案 0 :(得分:5)
问题是history
不是真正的命令,而是内置的shell。因此,你不能从C程序[1]中调用它。
根据用户使用的shell,您可以从~/.bash_history
,~/.zsh_history
等获取历史记录。但请注意,zsh仅在会话结束时写入此文件。
[1]好吧,你可以理论上尝试system("bash -c history")
,但你不会得到实际的历史记录,因为内置函数不会在当前会话的上下文中运行。