簡體   English   中英

從C程序發送Linux命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM