簡體   English   中英

如何使用C將所有內容從終端復制到包括stdout和提示的文件中?

[英]How do I copy everything from my terminal to a file including the stdout and the prompt using C?

我知道如何使用dup / dup2系統調用將stdout轉換為文件,但是如何獲取通常會在終端上正常顯示的整個輸出(包括提示用戶名以及$符號和當前工作方式的提示符)目錄)到文件?

無法評論信譽低下的原因。

我會說沒有辦法在C語言代碼中執行此操作。相反,您可以使用bash例如將所有內容重定向到文件,並將代碼保留在C語言中。 這樣,您便擁有了要保存的所有信息:提示,當前目錄,對程序的調用(包括標志),當然還有程序的輸出。

好吧,你可以這樣做:
-對於bash提示PS1回顯擴展的PS1 (如果您希望將其擴展,則沒有一種簡單的方法可以直接對PS1進行回顯)
-對於執行的命令https : //unix.stackexchange.com/questions/169259/how-to-capture-command-line-input-into-logfile-and-execute-it-at-the-same-time
- 標准輸出和錯誤輸出在Bash腳本中重定向stderr和stdout

我想,這就是您想要捕獲的全部內容。

是的,您可以,但是在很多細節上可能很難(取決於您的專家水平)。 為了使外殼正常運行 (我的意思是完全像在終端中一樣),那么它需要與終端(特殊系統對象)進行交互。 因此,您需要創建一個行為類似於終端的程序,這就是偽終端設備( /dev )的用途。 閱讀有關此內容的文檔以實現它,但是粗略地講,您的應用程序的行為應類似於用戶,因此應連接到偽終端的從屬端,並將外殼連接到偽終端的主端。 然后,您可以輕松地記錄用戶的實際輸入並捕獲shell的輸出。

在Unix系統中查找script命令。 如果要捕獲命令的所有鍵盤和標准輸入/輸出,請使用script可執行文件。 如果要查看完成情況,請查找源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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