繁体   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