如何使用 C 将所有内容从我的终端复制到一个文件,包括标准输出和提示符?
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 中的代码。
通过这种方式,您可以获得所有要保存的信息:提示、当前目录、对程序的调用(包括标志),当然还有程序的输出。
嗯,你可以这样做:
-For bash prompt PS1: Echo expanded PS1 (如果你想扩大它,如果没有,有一个简单的方法可以做到只是 echong PS1)
- 对于执行的命令:https://unix.stackexchange.com/questions/169259/how-to-capture-command-line-input-into-logfile-and-execute-it-at-the-same-time
- 标准输出和错误输出:Redirect stderr and stdout in a Bash script
我想这就是你想要捕捉的一切。
是的,你可以,但这在很多细节上可能很难(取决于你的专家水平)。为了让 shell 表现得 正常 (我的意思是完全像在终端中一样),然后它需要与终端(特殊系统对象)交互。因此,您需要创建一个行为类似于终端的程序,这就是伪终端设备 (/dev
) 的用途。阅读有关此的文档以实现它,但粗略地说,您的应用程序应该表现得像用户一样,因此应该连接到伪终端的从属端,shell 连接到伪终端的主控端。然后,您可以轻松记录用户的真实输入并捕获 shell.
的输出
在Unix系统中查找script
命令。如果要捕获命令的所有键盘和标准 in/out,请使用 script
可执行文件。如果你想看看它是如何完成的,请查找源代码。
我知道如何使用 dup/dup2 系统调用将 stdout 获取到文件中,但是我如何获取通常会在我的终端上显示的整个输出(包括提示我的用户名以及$
符号和当前工作目录)到文件?
由于信誉度低无法评论。
我会说没有办法在 C 代码中执行此操作。相反,您可以使用 bash 将所有内容重定向到文件,并按原样保留 C 中的代码。 通过这种方式,您可以获得所有要保存的信息:提示、当前目录、对程序的调用(包括标志),当然还有程序的输出。
嗯,你可以这样做:
-For bash prompt PS1: Echo expanded PS1 (如果你想扩大它,如果没有,有一个简单的方法可以做到只是 echong PS1)
- 对于执行的命令:https://unix.stackexchange.com/questions/169259/how-to-capture-command-line-input-into-logfile-and-execute-it-at-the-same-time
- 标准输出和错误输出:Redirect stderr and stdout in a Bash script
我想这就是你想要捕捉的一切。
是的,你可以,但这在很多细节上可能很难(取决于你的专家水平)。为了让 shell 表现得 正常 (我的意思是完全像在终端中一样),然后它需要与终端(特殊系统对象)交互。因此,您需要创建一个行为类似于终端的程序,这就是伪终端设备 (/dev
) 的用途。阅读有关此的文档以实现它,但粗略地说,您的应用程序应该表现得像用户一样,因此应该连接到伪终端的从属端,shell 连接到伪终端的主控端。然后,您可以轻松记录用户的真实输入并捕获 shell.
在Unix系统中查找script
命令。如果要捕获命令的所有键盘和标准 in/out,请使用 script
可执行文件。如果你想看看它是如何完成的,请查找源代码。