gpt4 book ai didi

java - 从 Java 操作终端 session

转载 作者:IT王子 更新时间:2023-10-29 01:05:32 24 4
gpt4 key购买 nike

我正在尝试用 Java 制作一个终端模拟器。 java 程序将接受来自用户的命令,并向他们显示其输出。我可以模拟像“ls”这样的简单命令,但我不知道如何处理像“cd”这样的命令。这是因为,我正在使用 exec() 方法来执行终端命令。因此,所有命令都在当前目录中执行。执行'cd ..'之类的命令,但是它们没有持久效果,因为每个命令都是由exec()单独执行的。
任何想法如何模拟整个 session ?

最佳答案

如果您正在使用 exec() 执行命令,那么您并不是在编写终端仿真器;你正在写一个shell。在这种情况下,您将需要跟踪 shell 跟踪的内容,例如环境变量和工作目录。

如果你真的想写一个终端模拟器,你会通过一个伪终端与一个 shell 进程对话。然后您的程序将只跟踪终端跟踪的事情,例如线路状态和屏幕上显示的内容。

使用 Java 的伪终端会有点棘手,因为大多数文档都假定您使用的是 C api。 man pty 应该可以帮助您入门。您的 Java 进程必须使用 FileStream 对象打开伪终端的主端。我不确定 Java 中是否有办法让子进程打开伪终端的从属端;您可能必须使用 exec() 调用一个 shell 命令,该命令启动另一个 shell 命令,标准输入/输出/错误重定向到伪终端的从属端。

关于java - 从 Java 操作终端 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com