2013-08-04 71 views
1

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

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

我希望它将命令“历史”的结果写入文档,但它失败了一个空白的。

如果将其更改为“日期>>历史记录”,则将当前系统时间写入文档。

“历史>>历史”有什么问题吗? 如果我想要完成这项工作,我该怎么做? 谢谢!

+1

你究竟想要在这里做什么? – haneefmubarak

+1

运行'哪个历史记录',观察它是...可能是shell内建的 – mnagel

+0

如果日期写入历史记录,那么历史记录可能不会写入任何标准输出,因此您可以用>>将其重定向到一个文件, –

回答

5

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

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

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

+0

谢谢你找出答案! –