2013-08-04 70 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

謝謝你找出答案! –