[英]Send Linux command from C program
我正在編寫一個在Linux shell中運行的C程序。 現在我遇到了這樣的命令問題。
#include <stdio.h>
void main()
{
char* command="history>>history";
system(command);
}
我希望它將命令“ history”的結果寫入文檔,但是失敗,並顯示空白。
如果將其更改為“ date >> history”,則當前系統時間將寫入文檔中。
“歷史>>歷史”有什么問題嗎? 如果我想得到那份工作該怎么辦? 謝謝!
問題在於history
不是真正的命令,而是內置的shell。 因此,您不能從C程序[1]調用它。
根據用戶使用的外殼,您可以改為從~/.bash_history
和~/.zsh_history
等獲取歷史記錄。 但是請注意,zsh僅在會話結束時寫入此文件。
[1]好吧,從理論上講,您可以嘗試system("bash -c history")
,但是由於內置函數未在當前會話的上下文中運行,因此您將無法獲得實際的歷史記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.